1 // P0634R3
2 // { dg-do compile { target c++2a } }
3 
4 namespace N {
5  // template<typename T> extern T::type v; // #1a
6   template<typename T> T::type v(typename T::value); // #1b
7 }
8 template<typename T> T::type N::v(T::value); // #2
9 
10 namespace N2 {
11   template<typename T> extern T::type v; // #1a
12   //template<typename T> T::type v(typename T::value); // #1b
13 }
14 template<typename T> T::type N2::v(T::value);
15 
16 namespace A {
17   inline namespace B { template<typename T> int f(typename T::foo); }
18   inline namespace C { template<typename T> extern int f; }
19 }
20 template<typename T> int A::f(T::foo); // { dg-error "ambiguous" }
21