The enclosing requires-expression will evaluate to false
if substitution of template arguments fails.
— end note]
[Example 1: template<typename T, typename T::type =0>struct S;
template<typename T>using Ref = T&;
template<typename T>concept C =requires{typename T::inner; // required nested member nametypename S<T>; // required valid ([temp.names]) template-id; fails if T::type does not exist as a type// to which 0 can be implicitly convertedtypename Ref<T>; // required alias template substitution, fails if T is voidtypename[:T::r1:]; // fails if T::r1 is not a reflection of a typetypename[:T::r2:]<int>; // fails if T::r2 is not a reflection of a template Z for which Z<int> is a type};
— end example]