1

我目前正在尝试使用 Microsoft Visual Studio 2012 编译一个相当大的项目。我发现它与旧版本一起编译得很好,但是在这个版本中,无论 astd::list仅与一个模板参数一起使用,我都会遇到错误。

error C2976: 'std::list' : too few template arguments

在所有其他项目中以及在创建新项目时,我可以std::list很好地使用默认分配器,所以我猜它可能必须对 MSVC 2012 做一些事情,但我不知道那可能是什么。

4

1 回答 1

4

创建 SSCCE 正是问题所在:这是一个巨大的项目,我无法在新项目中重现该问题。

_VARIADIC_MAX=10在定义了将错误消息变成了哪个之后,问题变得更加明显error C2027: use of undefined type 'std::list'

事实证明,有包含 for mapset以及一些其他包含前向声明的标头:在几个地方std::list添加缺失修复了它!#include <list>

我不确定为什么这会在其他平台和 MSVC10 上编译,但可能这些系统中的 STL 标头结构不同。

还要感谢@kassak 的提示,它确实有帮助!

于 2013-04-12T09:57:01.447 回答