我正在尝试这样的事情:
if( constexpr( TEMPLATE_BOOL_VALUE ) || bOhterBoolValue )
{
Foo();
}
else
{
Baa();
}
我通常使用预处理器宏来表示这样的if语句:
#define IF_COND if( constexpr( TEMPLATE_BOOL_VALUE ) || bOhterBoolValue )
IF_COND
{
Foo();
}
else
{
Baa();
}
在Visual Studio 2017中,这有效(我应该但没有检查生成的代码,但编译器接受了这种语法)。
在Visual Studio 2019中,现在出现错误“C2760”,因为它只允许:
if constexpr( TEMPLATE_BOOL_VALUE )
{
Foo();
}
else if( bOhterBoolValue )
{
Foo();
}
else
{
Baa();
}
没有键入两次Foo()会有另一种方法吗?
希望你能帮忙。我不想得到两个相同的案件。
由于Foo();
分支是有效的(即编译),无论TEMPLATE_BOOL_VALUE
是否为真,都不需要使用if constexpr
。
只需使用if (TEMPLATE_BOOL_VALUE || bOhterBoolValue)
。