1 // { dg-do compile { target c++11 } } 2 3 // [temp.alias]/3: 4 // The type-id in an alias template declaration shall not refer 5 // to the alias template being declared. The type produced by an 6 // alias template specialization shall not directly or indirectly 7 // make use of that specialization. 8 9 template <class T> struct A; 10 template <class T> using B = typename A<T>::U; // { dg-error "type" } 11 template <class T> struct A { 12 typedef B<T> U; 13 }; 14 B<short> b; 15