我们正在从VS2005迁移到VS2015,相同的代码在VS 2005中可以正常编译,但在VS 2015中会引发错误
“'F':非类型模板参数'F'的非法类型”
#define DLLEXPORT __declspec (dllexport)
template <class DLLEXPORT F> class DLLEXPORT QWCalloutManager {
};
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
任何帮助吗?
最佳答案
您需要重写为:
#define DLLEXPORT __declspec (dllexport)
template <class F> class DLLEXPORT QWCalloutManager {
};
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
不能说
F
必须是导出的类(除非您可以为其编写静态断言)。您只需要在代码审查中进行检查即可。