специализация класса шаблона с параметром класса шаблона

Скажи, что у меня есть:

template < typename T >
class ClassA
{
void doTheStuff (T const * t);
};

template < typename T >
class ClassB
{
// Some stuff...
};

Я хотел бы специализировать метод doTheStuff для всех экземпляров шаблона ClassB следующим образом:

template <typename T>
void ClassA< ClassB< T > >::doTheStuff (ClassB< T > const * t)
{
// Stuff done in the same way for all ClassB< T > classes
}

Но, конечно, это не работает. Позор, я не знаю, как я мог это сделать.

С компилятором Visual Studio я получаю:

 error C2244: 'ClassA<T>::doTheStuff' : unable to match function definition to an existing declaration
see declaration of 'ClassA<T>::doTheStuff'
definition
'void ClassA<ClassB<T>>::doTheStuff(const ClassB<T> *)'
existing declarations
'void ClassA<T>::doTheStuff(const T *)'

Я нашел этот пост: Шаблонная специализация класса, где аргумент шаблона является шаблоном

Поэтому я попробовал полную специализацию класса, как советовали, но она тоже не работает:

template <>
template < typename U >
class ClassA< ClassB< U > >
{
public:
void doTheStuff (ClassB< U > const * b)
{
// Stuff done in the same way for all ClassB< T > classes
}
};

Визуал говорит:

error C2910: 'ClassA<ClassB<U>>' : cannot be explicitly specialized

Любая помощь приветствуется!

Floof.

2

Решение

Удалить лишний template<> и это будет работать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]