我正在尝试这样的事情:
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()吗?
希望您能提供帮助。我不想得到两个相同的案例。
答案 0 :(得分:4)
由于Foo();
分支有效(即编译),而与TEMPLATE_BOOL_VALUE
是否为真无关,因此无需使用if constexpr
。
只需使用if (TEMPLATE_BOOL_VALUE || bOhterBoolValue)
。