Warum ist ein Consteval-Funktionsausdruck KEIN primärer Ausdruck?
Posted: 05 Jan 2025, 16:54
Betrachten Sie den folgenden Codeausschnitt (kompiliert mit clang19):
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?
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() {}
Warum ist ein Konstruktionsfunktionsausdruck NICHT ein primärer Ausdruck?