在试图弄清为什么出现某个编译错误的原因时,我想到了以下最小示例:
NavigationView
对于我尝试过的每个版本的clang(3.7+),此编译都不会出现问题,但是对于
,使用gcc(测试5-8)失败错误:调用非“ constexpr”函数“ void __assert_fail(const char *,const char *,unsigned int,const char *)’
根据我的理解,该函数应该能够为constexpr void Test(bool test)
{
if (test)
return;
assert(false);
}
,因为存在一组参数值,可以在编译时对其求值。
我的理解是错误的,还是gcc无法编译此错误?
答案 0 :(得分:3)
这是GCC bug 86678,几天前已修复。
答案 1 :(得分:0)
如果你喜欢我有这个问题,但你不能升级编译器也不能改变代码。一个快速的解决方法是让编译器通过向编译器添加 NDEBUG 标志来删除断言:
-DNDEBUG
/DNDEBUG
也许这可以为某人节省一些时间。