[temp.dep] (original) (raw)

:

template class A { A* p1;
A* p2;
A<T*> p3;
::A* p4;
class B { B* p1;
A::B* p2;
typename A<T*>::B* p3;
}; };

template class A<T*> { A<T*>* p1;
A* p2;
};

template <class T1, class T2, int I> struct B { B<T1, T2, I>* b1;
B<T2, T1, I>* b2;
typedef T1 my_T1; static const int my_I = I; static const int my_I2 = I+0; static const int my_I3 = my_I; static const long my_I4 = I; static const int my_I5 = (I); B<my_T1, T2, my_I>* b3;
B<my_T1, T2, my_I2>* b4;
B<my_T1, T2, my_I3>* b5;
B<my_T1, T2, my_I4>* b6;
B<my_T1, T2, my_I5>* b7;
};

end example