我们正在从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必须是导出的类(除非您可以为其编写静态断言)。您只需要在代码审查中进行检查即可。

10-04 16:21