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]