Page 1 of 1

Warum ist ein Consteval-Funktionsausdruck KEIN primärer Ausdruck?

Posted: 05 Jan 2025, 16:54
by Guest
Betrachten Sie den folgenden Codeausschnitt (kompiliert mit clang19):

Code: Select all

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() {}
Die cppref-Seite sagt mir, dass IsEven(n) kein primärer Ausdruck ist. Ich frage mich nur:

Warum ist ein Konstruktionsfunktionsausdruck NICHT ein primärer Ausdruck?