在constexpr函数中断言

问题描述 投票:2回答:1

在试图弄清楚为什么我遇到某个编译错误时,我想出了以下最小的例子:

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不能正确编译?

c++ constexpr
1个回答
3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.