diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.jason/template10.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.jason/template10.C | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template10.C b/gcc/testsuite/g++.old-deja/g++.jason/template10.C new file mode 100644 index 000000000..196ea34b7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.jason/template10.C @@ -0,0 +1,31 @@ +// { dg-do assemble } +// Bug: member operator shadows global template in tsubst. + +class ostream; + +template <class TP> class smanip; + +template<class TP> +ostream& operator<<(ostream& o, const smanip<TP>& m); + +template <class TP> class smanip { +public: + friend ostream& operator<< <>(ostream &o, const smanip<TP>&m); +}; + +template<class TP> +ostream& operator<<(ostream& o, const smanip<TP>& m) +{ return o;} + +class X +{ +public: + X operator<<(int); // commenting out this line makes it work! + void print(ostream& os); +}; + +void X::print(ostream& os) +{ + smanip<double> smd; + os << smd; // { dg-bogus "" } +} |