一直无法完全找到拷贝。
是否可以预先声明函数特化中使用的类型?
考虑以下代码:
.h 中的
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”,这当然会编译。
最佳答案
简单的解决方法是简单地将前向声明放在自己的行上:
class SpecialT;
template<>
SpecialT* Foo<SpecialT>();
VS 2015 on Godbolt 接受它就好了。
关于c++ - 具有前向声明类型的函数模板特化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53758591/