1 // P0634R3
2 // { dg-do compile { target c++2a } }
3 
4 // Not in namespace scope.
5 template<typename T>
fn1()6 void fn1 ()
7 {
8   // init-statement -> simple-declaration
9   if (T::X r = 0; 0) // { dg-error "need .typename.|expected" }
10     ;
11 
12   for (T::X g = 0; ;) // { dg-error "need .typename.|expected" }
13     ;
14 }
15 
16 template<typename T>
17 void
fn2()18 fn2 ()
19 {
20   T::X fn3 (); // { dg-error "need .typename.|expected" }
21   T::X v1; // { dg-error "need .typename.|expected" }
22   T::X v2 = 0; // { dg-error "need .typename.|expected" }
23   T::X v3{0}; // { dg-error "need .typename.|expected" }
24   static constexpr T::X v4 = 0; // { dg-error "need .typename." }
25   typedef T::X T2; // { dg-error "need .typename." }
26 }
27