[expr.prim.id.general] (original) (raw)
For an id-expression that denotes an overload set, overload resolution is performed to select a unique function ([over.match], [over.over]).
[Note 2:
A program cannot refer to a function with a trailing requires-clausewhose constraint-expression is not satisfied, because such functions are never selected by overload resolution.
[Example 2: template<typename T> struct A { static void f(int) requires false;} void g() { A<int>::f(0); void (*p1)(int) = A<int>::f; decltype(A<int>::f)* p2 = nullptr; }
In each case, the constraints of f are not satisfied.
In the declaration of p2, those constraints are required to be satisfied even thoughf is an unevaluated operand.
— _end example_]
— _end note_]