在试图弄清楚为什么我遇到某个编译错误时,我想出了以下最小的例子:
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 bug 86678,并在几天前修复。