Не удалось найти дубликат.
Можно ли заранее объявить тип, используемый в специализации функции?
Рассмотрим следующий код:
в .ч
template <typename T>
T* Foo()
{
//generic implementation
}
template<>
class SpecialT* Foo<class SpecialT>();
в .cpp
#include "SpecialT.h"
template<>
SpecialT* Foo<SpecialT>()
{
//specialized implementation
}
Существует ли какой-либо синтаксис, в котором вышеизложенное возможно и нене приводит к множеству ошибок компилятора (C2910, C2909, C2768 и т. д.)?
Это, конечно, компилируется, если в заголовок шаблона включен "SpecialT.h".