// { dg-do compile { target c++11 } } // [temp.alias]/3: // The type-id in an alias template declaration shall not refer // to the alias template being declared. The type produced by an // alias template specialization shall not directly or indirectly // make use of that specialization. template struct A; template using B = typename A::U; // { dg-error "type" } template struct A { typedef B U; }; B b; // { dg-error "invalid type" }