| // { dg-do assemble } | |
| template < class T, template < class > class E1, template < class > class E2 > | |
| class Add { | |
| public: | |
| Add(const E1<T>& e1, const E2<T>& e2) {} | |
| }; | |
| template < class T > | |
| struct Id { | |
| template < template < class > class E > | |
| Add < T, ::Id, E > operator+(const E<T>& e) const { | |
| return Add < T, ::Id, E >(*this, e); | |
| } | |
| }; | |
| template struct Id<double>; |