在试图找出我为什么得到一个特定的编译错误时,我想出了以下最小的例子:
constexpr void Test(bool test)
{
if (test)
return;
assert(false);
}这在编译所有版本的clang i tested (3.7+)时都没有问题,但在gcc (测试5-8)中失败。
错误:调用非“constexpr”函数‘void __assert_fail(const char*,const char*,unsigned int,const char*)’
根据我的理解,函数应该能够是constexpr,因为有一组参数值可以在编译时对函数进行计算。
我的理解是错的,还是gcc没有编错?
发布于 2018-09-19 04:16:05
这是GCC虫86678,几天前就修好了。
发布于 2021-02-19 08:09:19
如果你像我一样有这个问题,但你不能升级编译器,也不能改变代码。一个快速的解决方法是让编译器通过向编译器添加NDEBUG标志来删除断言:
-DNDEBUG/DNDEBUG也许这能节省一些时间。
https://stackoverflow.com/questions/52397841
复制相似问题