1// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
2
3// Examples from CWG1056.
4namespace 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
24namespace 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