diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.pt/ttp43.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/ttp43.C | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp43.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp43.C new file mode 100644 index 000000000..e1bc4cee6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp43.C @@ -0,0 +1,30 @@ +// { dg-do assemble } + +template < class T, template <class> class E1, template <class> class E2 > +struct Add { + Add(const E1<T>& e1, const E2<T>& e2) {} +}; + + +template < class T, template <class> class E1, template <class> class E2 > +struct Mul { + Mul(const E1<T>& e1, const E2<T>& e2) {} +}; + + +template < class T > +struct Lit { + Lit(const T& t) {} +}; + + +template < class T > +struct Id { + Add < T, ::Id, Lit > operator+(const T& t) const { + return Add < T, ::Id, Lit >(*this, Lit<T>(t)); + } + + Mul < T, ::Id, Lit > operator*(const T& t) const { + return Mul < T, ::Id, Lit >(*this, Lit<T>(t)); + } +}; |