我目前正在尝试使用Microsoft Visual Studio 2012编译一个相当大的项目。我发现它可以很好地编译旧版本但是使用这个版本我只会在一个模板中使用std::list
时出错参数。
error C2976: 'std::list' : too few template arguments
在每个其他项目中,当创建一个新项目时,我可以使用std::list
和默认分配器一样好,所以我猜它可能要对MSVC 2012做些什么,但是我无能为力是
答案 0 :(得分:4)
创建SSCCE正是问题所在:这是一个庞大的项目,我无法在新项目中重现该问题。
在定义_VARIADIC_MAX=10
之后,问题变得更加明显,而error C2027: use of undefined type 'std::list'
将错误消息转换为map
。
事实证明,set
,std::list
和其他一些标题包含#include <list>
的前向声明:在少数几个中添加了缺失的{{1}}地方修好了!
我不确定为什么这会在其他平台和MSVC10上编译,但可能这些系统中的STL标头结构不同。
还要感谢@kassak提示,它肯定有帮助!