3 template < class T, template < class > class E1, template < class > class E2 >
6 Add(const E1<T>& e1, const E2<T>& e2) {}
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);
17 template struct Id<double>;