operator = всегда скрыт реализацией производного класса, если не указано явное использование объявлений. Это верно как для шаблонов классов, так и для обычных классов.
Кстати, ваша декларация оператора = очень нестандартная. Обычно это объявляется для класса «А».
A& operator=(A const &);
Вот то, что вы можете искать (и компилировать)
template <class T>
class TemplatePtr
{
public:
TemplatePtr& operator=(TemplatePtr const &)
{return *this;}
};
template<class T>
class TemplatePtr_ClassName: public TemplatePtr<T>
{
public:
~TemplatePtr_ClassName(){};
TemplatePtr_ClassName& operator=(TemplatePtr_ClassName const &that){
TemplatePtr<T>::operator=(that); // invoke base class assignment operator
return *this;
}
};
int main()
{
TemplatePtr_ClassName<int> data;
data = *new TemplatePtr_ClassName<int>;
// delete stuff
}