template<class T>class A...{private: T value;public: void assign(const A<T>&x) ...{ value=x.value; }};template<class T>class B...{private: T value;public: template <class X> void assign(const B<X>&x) ...{ value=x.getValue(); //注意:x.getValue()不能换成x.value; } T getValue() const ...{ return value; }};int main()...{ A<int > a; A<double> b; a.assign(b); //error B<int > c; B<double> d; c.assign(d); return 0;}