1 // { dg-do compile { target c++11 } }
2 
3 // Exercise some member alias templates ...
4 
5 template<class T, class U> class A0 {};
6 
7 template<class T>
8 struct A1 {
9     template<class U> struct S {};
10     template<class U> using AA0 = A0<T, U>;
11 
12   void f(A0<T, int>);
13 
14   void
fooA115   foo()
16   {
17     AA0<int> a;
18     const AA0<int> b;
19     f(a);
20     f(b);
21   }
22 };
23 
24 void
bar()25 bar()
26 {
27     A1<int> a1;
28     a1.foo();
29     A1<int>::AA0<int> a1aa0;
30     a1.f(a1aa0);
31 }
32 
33 // ... some simple member alias ...
34 struct B {
35     using A = int;
36 };
37 
38 B::A a;
39 
40 // ... and some simple alias
41 
42 using Int = int;
43