Почему выражение константной функции НЕ является основным выражением?C++

Программы на C++. Форум разработчиков
Anonymous
Почему выражение константной функции НЕ является основным выражением?

Сообщение Anonymous »

Рассмотрим следующий фрагмент кода (скомпилированный с помощью clang19):

Код: Выделить всё

consteval bool IsEven(int n) {
return 0 == n % 2;
}

template
requires (IsEven(n)) // ok
void f1() {}

template
requires IsEven(n) // error: Atomic constraint must be of type 'bool'
// (found '')
void f2() {}
На странице cppref указано, что IsEven(n) не является основным выражением. Мне просто интересно:

Почему выражение постоянной функции НЕ является основным выражением?


Подробнее здесь: https://stackoverflow.com/questions/793 ... expression

Вернуться в «C++»