在任何编译器中c ++ 0x库可用性?

时间:2011-06-22 13:31:55

标签: c++ c++11

该标准无疑需要数年才能实现,因为它看起来很棒,所以很臭。但我正在阅读它,至少库添加(特别是哈希映射)会立即真正有用。我注意到在g ++文档中我可以获得4.3或更高版本并使用标志来请求新功能,无论存在什么,但我想知道是否有任何方法可以获得库。现在内置了许多最好的增强功能的事实真的很棒,最后内置了一个像样的随机数设备!

那么,有没有我现在可以使用的编译器,它们有一个相当完整的库,即使它不能使用一些很酷的新语言功能,如auto?

6 个答案:

答案 0 :(得分:7)

如果您需要标准库扩展,可以使用Boost。新的标准库增强功能主要受到Boost库的启发。

至于支持编译器,Visual Studio 2010 supports a subset of the C++11 standard,GCC有currently the best support for C++11,而Clang也是adopting the new standard。不知道其他编译器,但我认为他们很快就会关注。

答案 1 :(得分:3)

带选项-std=c++0x的GCC已经涵盖了C ++ 0x的一个非常好的子集。 4.4版本已经非常实用,4.6甚至更多。它缺少模板别名,但是许多非常有用的语言功能以及库的很大一部分都在那里并且功能齐全。

这是full feature list

答案 2 :(得分:3)

除了-std=c++0x模式的GCC以及GCC支持的所有平台上的默认libstdc ++之外,您还可以使用LLVM的libc++,它在Linux / BSD / Mac上运行良好,但尚未移植到Windows。

答案 3 :(得分:1)

GCC / libstdc ++有大部分库,但可能需要将tr1/前置到包含路径(#include <tr1/unordered_map>用于散列映射)。它还将新库内容放在命名空间std::tr1中,而不仅仅放在std

(TR1代表技术报告1,这是一份描述C ++ 0x库添加的报告。)

答案 4 :(得分:1)

有些库,特别是你在这里提到的库(unordered_map)在2003年被定义为技术评审的一部分,并且已经被转移到主要是未经修改的C ++ 0x标准。大多数编译器都在std::tr1命名空间中实现了TR1库。

其他来自其他来源的文库,Boost是即将推出的标准(functionbindthread ...)的lib的重要来源,但这取决于什么你想要添加到你的项目。

至于你是否可以从C ++ 0x中提取库并在非c ++ 0x编译器中使用它们,你很可能无法做到,因为它们会利用更新的特性(想想移动构造函数) ),这将无法编译。

答案 5 :(得分:0)

这是您可以找到大多数编译器的c ++ 0x支持的链接

http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

每当添加新的c ++ 0x支持时,列表都会更新。 正如您所见,g ++目前支持最大数量的C ++ 0x功能。