name<int> and name<double> are different instances, and therefore, in fact, are different classes. Their private members cannot be used by default. You must make name<T> friend for everyone else name .
template <typename T> class name { public: name() : h_(0){} template <typename U> operator name<U>() { name<U> u; u.h_ = h_; return u; } private: int h_; template <typename>
kennytm
source share