具有前向声明类型的函数模板特化
Function Template Specialization with Forward Declared Type
没能完全找到副本。
是否可以前向声明函数特化中使用的类型?
考虑以下代码:
在.h
template <typename T>
T* Foo()
{
//generic implementation
}
template<>
class SpecialT* Foo<class SpecialT>();
in .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接受就好了
没能完全找到副本。
是否可以前向声明函数特化中使用的类型?
考虑以下代码:
在.h
template <typename T>
T* Foo()
{
//generic implementation
}
template<>
class SpecialT* Foo<class SpecialT>();
in .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接受就好了