утверждать в функции constexpr - PullRequest
0 голосов
/ 19 сентября 2018

Пытаясь понять, почему я получаю определенную ошибку компиляции, я нашел следующий минимальный пример:

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 неверен при невозможности компилировать это?

1 Ответ

0 голосов
/ 19 сентября 2018

Это ошибка GCC 86678 , и она была исправлена ​​всего несколько дней назад.

...