Fix PR48484
[official-gcc.git] / gcc / testsuite / g++.dg / tc1 / dr176.C
blob2879ac4e79a3d440ff2058cd007f1718567bfc2d
1 // { dg-do compile }
2 // Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
3 // DR176: Name injection and templates 
5 namespace N1 {
6   template <class T> struct Base {
7     Base* p;
8     Base<T*>* p2;
9     ::Base* p3;    // { dg-error "" "" }
10   };
12   template <class T> struct Derived: public Base<T> {
13     Base* p;     // { dg-error "" "unqualified name binds to N1::Base" }
14     Base<T*>* p2;
15     typename Derived::Base* p3;   // { dg-bogus "" "injected class name in derived classes" }
16   };
18   template struct Derived<void>;  // { dg-bogus "instantiated from here" "everything should be looked up at parsing time (after DR224)" }
22 namespace N2 {
23   template <class T> struct Base {};
24   template <class T> struct Derived: public Base<T> {
25     typename Derived::template Base<double>* p1;  // { dg-bogus "" "" }
26   };
28   template struct Derived<void>;