Visual C++ 2010 Express 中默认的 C++0x 模式是啥?

Posted

技术标签:

【中文标题】Visual C++ 2010 Express 中默认的 C++0x 模式是啥?【英文标题】: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。 【参考方案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。

以上是关于Visual C++ 2010 Express 中默认的 C++0x 模式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio C++ 2010 Express中的程序错误

Visual C++ 2010 Express 不生成 DLL 文件

使用 Visual C++ Express 2010 时找不到 atlbase.h

基于 microsoft visual c++ express 2010 的 64 位构建

在 Visual C++ Express 2010 中找不到 .exe 文件

microsoft visual c++6.0和micorostf visual c++ 2010 express有啥区别