【发布时间】:2018-09-19 04:03:39
【问题描述】:
在试图找出为什么会出现某种编译错误时,我想出了以下最小示例:
constexpr void Test(bool test)
{
if (test)
return;
assert(false);
}
我尝试过的每个 clang 版本(3.7+)都可以毫无问题地编译,但使用 gcc(测试 5-8)失败,使用
错误:调用非‘constexpr’函数‘void __assert_fail(const char*, const char*, unsigned int, const char*)'
根据我的理解,函数应该可以是constexpr,因为有一组参数值可以在编译时对其进行评估。
是我的理解错了,还是 gcc 编译不成功?
【问题讨论】:
-
也发生在 gcc 7.2.0 中。也许 gcc is 错了……