Home | History | Annotate | Download | only in temp.dep.type
      1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
      2 
      3 // Examples from CWG1056.
      4 namespace Example1 {
      5   template<class T> struct A;
      6   template<class T> using B = A<T>;
      7 
      8   template<class T> struct A {
      9     struct C {};
     10     B<T>::C bc; // ok, B<T> is the current instantiation.
     11   };
     12 
     13   template<class T> struct A<A<T>> {
     14     struct C {};
     15     B<B<T>>::C bc; // ok, B<B<T>> is the current instantiation.
     16   };
     17 
     18   template<class T> struct A<A<A<T>>> {
     19     struct C {};
     20     B<B<T>>::C bc; // expected-error {{missing 'typename'}}
     21   };
     22 }
     23 
     24 namespace Example2 {
     25   template<class T> struct A {
     26     void g();
     27   };
     28   template<class T> using B = A<T>;
     29   template<class T> void B<T>::g() {} // ok.
     30 }
     31