【问题标题】:Which is the default C++0x mode in Visual C++ 2010 Express?Visual C++ 2010 Express 中默认的 C++0x 模式是什么?
【发布时间】:2010-07-14 15:20:16
【问题描述】:

我刚刚安装了 Visual C++ 2010 Express,我的印象是默认模式包括 C++0x 功能和 std::tr1 库。

error C2872: 'is_same' : ambiguous symbol
        could be 'C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\type_traits(941) : std::tr1::is_same'

你能确认一下吗?如果是这种情况,有什么方法可以禁用默认设置吗?

为什么 tr1 符号是可见的? MS 标头中有使用吗?

【问题讨论】:

  • 什么代码会产生这个错误?
  • @詹姆斯。测试代码中有一些 using namespace std。

标签: c++ c++11 visual-studio-2010 visual-c++


【解决方案1】:

是的:VC10 提供了一些 C++0x 特性(自动、decltype、r 值引用等)和 std::tr1 在 std 命名空间内,它不是可选的 AFAIK。

但是,如果您也安装了 VS2010,您仍然可以将 VS2010 与 VC9(没有这些功能)一起使用。为此,只需将项目设置中的编译器版本从 100 (vc10) 更改为 90 (vc9)。在这种情况下,std::tr1 将在 std::tr1 命名空间中可用。

【讨论】:

  • 我不够清楚。我直接使用命令行而不是 IDE。不管怎么说,还是要谢谢你。我不使用标准。 tr1 符号是如何可见的?
  • 好的,那么您将被这些功能所困扰。如果你没有写任何 using namespace std;那么你应该检查你正在使用的库的标题。所有标准库都在 std 命名空间中,因此这是访问它的唯一方法。也许检查特征标头中的宏,看看是否可以将 std 命名空间放在全局命名空间中?
  • 你是对的。测试代码中有一些 using namespace std。
猜你喜欢
  • 2010-10-25
  • 2011-03-11
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 2011-11-10
相关资源
最近更新 更多