1// PR c++/14258 2// { dg-do run } 3 4template<typename T> 5struct A 6{ 7 typedef T type; 8 typedef A type2; 9}; 10 11template<typename T> 12struct B : A<T> 13{ 14 using typename A<T>::type; 15 type t; 16 17 using typename A<T>::type2; 18 19 type f() 20 { 21 type i = 1; 22 return i; 23 } 24}; 25 26int main() 27{ 28 B<int>::type t = 4; 29 if (t != 4) 30 __builtin_abort(); 31 32 B<double> b; 33 b.t = 3; 34 if (b.t != 3) 35 __builtin_abort(); 36 37 B<long> b2; 38 if (b2.f() != 1) 39 __builtin_abort(); 40 41 B<double>::type2::type tt = 12; 42 if (tt != 12) 43 __builtin_abort(); 44} 45