Пытаясь понять, почему я получаю определенную ошибку компиляции, я нашел следующий минимальный пример:
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 неверен при невозможности компилировать это?