条款45:运用成员函数模板接收所有兼容类型
class Top { ... };
class Middle: public Top { ... };
template<typename T>
class SmartPtr {
public:
explicit SmartPtr(T* realPtr);
...
};
SmartPtr<Top> pt1 = SmartPtr<Middle>(new Middle); // 无法通过编译member function templates
template<typename T>
class SmartPtr {
public:
template<typename U>
Smart(const SmartPtr<U>& other);
};Last updated