A program cannot refer to a function
with a trailing requires-clause
whose constraint-expression is not satisfied,
because such functions are never selected by overload resolution.
[Example 2: template<typename T>struct A {staticvoid f(int)requiresfalse;
}void g(){
A<int>::f(0); // error: cannot call fvoid(*p1)(int)= A<int>::f; // error: cannot take the address of fdecltype(A<int>::f)* p2 =nullptr; // error: the type decltype(A<int>::f) is invalid}
In each case, the constraints of f are not satisfied.
In the declaration of p2,
those constraints are required to be satisfied
even though
f is an unevaluated operand.