在 constexpr 函数中断言

Joh*_*qua 3 c++ constexpr

在尝试找出为什么会出现某个编译错误时,我想出了以下最小示例:

\n\n
constexpr void Test(bool test)\n{\n    if (test)\n        return;\n\n    assert(false);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试过的每个版本的 clang (3.7+) 都可以毫无问题地进行编译,但使用 gcc 会失败(测试了 5-8),

\n\n
\n

错误:调用非\xe2\x80\x98constexpr\xe2\x80\x99函数\xe2\x80\x98void __assert_fail(const\n char*, const char*, unsigned int, const char*)\xe2\x80\x99

\n
\n\n

根据我的理解,该函数应该能够constexpr,因为可以在编译时评估该函数的一组参数值。

\n\n

是我的理解错误,还是gcc编译失败而错误?

\n

cpp*_*ner 6

这是GCC bug 86678,几天前刚刚修复。