If U is a non-static data member,
E refers to M as a member of the lookup context of the terminal name of E
(after any implicit transformation to
a class member access expression).
as part of a class member access
(after any implicit transformation (see above))
in which the
object expression
refers to the member's class
or a class derived from
that class, or
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 4: 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 need to be satisfied
even though
f is an unevaluated operand.