From Jason Turner

[expr.prim.req.type]

Diff to HTML by rtfpessoa

tmp/tmp9cdizkd5/{from.md → to.md} RENAMED
@@ -16,15 +16,16 @@ if substitution of template arguments fails. — *end note*]
16
  template<typename T, typename T::type = 0> struct S;
17
  template<typename T> using Ref = T&;
18
 
19
  template<typename T> concept C = requires {
20
  typename T::inner; // required nested member name
21
- typename S<T>; // required class template specialization
 
22
  typename Ref<T>; // required alias template substitution, fails if T is void
23
  };
24
  ```
25
 
26
  — *end example*]
27
 
28
  A *type-requirement* that names a class template specialization does not
29
- require that type to be complete [[basic.types]].
30
 
 
16
  template<typename T, typename T::type = 0> struct S;
17
  template<typename T> using Ref = T&;
18
 
19
  template<typename T> concept C = requires {
20
  typename T::inner; // required nested member name
21
+ typename S<T>; // required valid[temp.names] template-id;
22
+ // fails if T::type does not exist as a type to which 0 can be implicitly converted
23
  typename Ref<T>; // required alias template substitution, fails if T is void
24
  };
25
  ```
26
 
27
  — *end example*]
28
 
29
  A *type-requirement* that names a class template specialization does not
30
+ require that type to be complete [[term.incomplete.type]].
31