diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/tc1/dr176.C')
-rw-r--r-- | gcc/testsuite/g++.dg/tc1/dr176.C | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/tc1/dr176.C b/gcc/testsuite/g++.dg/tc1/dr176.C new file mode 100644 index 000000000..2879ac4e7 --- /dev/null +++ b/gcc/testsuite/g++.dg/tc1/dr176.C @@ -0,0 +1,29 @@ +// { dg-do compile } +// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org> +// DR176: Name injection and templates + +namespace N1 { + template <class T> struct Base { + Base* p; + Base<T*>* p2; + ::Base* p3; // { dg-error "" "" } + }; + + template <class T> struct Derived: public Base<T> { + Base* p; // { dg-error "" "unqualified name binds to N1::Base" } + Base<T*>* p2; + typename Derived::Base* p3; // { dg-bogus "" "injected class name in derived classes" } + }; + + template struct Derived<void>; // { dg-bogus "instantiated from here" "everything should be looked up at parsing time (after DR224)" } +} + + +namespace N2 { + template <class T> struct Base {}; + template <class T> struct Derived: public Base<T> { + typename Derived::template Base<double>* p1; // { dg-bogus "" "" } + }; + + template struct Derived<void>; +} |