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 transformation to
a class member access expression ([class.mfct.non.static])).
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.