1// { dg-do assemble } 2 3template < class T, template < class > class E1, template < class > class E2 > 4class Add { 5public: 6 Add(const E1<T>& e1, const E2<T>& e2) {} 7}; 8 9template < class T > 10struct Id { 11 template < template < class > class E > 12 Add < T, ::Id, E > operator+(const E<T>& e) const { 13 return Add < T, ::Id, E >(*this, e); 14 } 15}; 16 17template struct Id<double>; 18