将 constexpr() 与非常量条件组合

Combining if constexpr() with non const condition

本文关键字:常量 条件 组合 非常 constexpr      更新时间:2023-10-16

>我正在尝试这样的事情:

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(( 的情况下执行此操作?

希望你能帮到忙。我不想得到两个相同的案例。

由于无论TEMPLATE_BOOL_VALUE是否为真Foo();分支都是有效的(即编译(,因此无需使用 if constexpr

只需使用 if (TEMPLATE_BOOL_VALUE || bOhterBoolValue) .