哪些用于Windows的C ++ 11编译器支持“is_nothrow_move_constructible”等新类型特征?

时间:2012-08-17 07:18:34

标签: c++ windows c++11 typetraits

是否有适用于Windows的C ++ 11编译器支持新的C ++ 11类型特征,如is_nothrow_move_constructible

我试图编写一个支持它的容器,却发现我的编译器都没有(VC ++ 2010,TDM MinGW32 GCC 4.6)支持它......

4 个答案:

答案 0 :(得分:3)

对于mingw,我建议STL's distro here(gcc 4.7.1)。它还带有1.50的增益。

还有mingw-w64(原版mingw的一个分支),我推荐rubenvb's personal builds here。如果您需要32位版本,请转到Toolchains targetting Win32。他还有个人构建的clang(Windows上的clang支持仍然非常错误.x64构建将报告链接器错误,因此只能用于更好的诊断等)。

STL的发行版非常好,但是我发现mingw-w64能够更好地支持win32 api(我遇到了原始mingw的无数问题)和c ++ 11头文件,例如{{1}在原始的mingw中不支持。 mingw-w64更加活跃(可以创建32位和64位二进制文​​件),并且包括对windows vista及更高版本的新功能的支持。

有关mingw-w64,see herefaq的命名惯例的详细信息。

答案 1 :(得分:2)

Visual Studio C ++ 2012 Beta根据参考资料支持许多C ++ 11类型特征。看看the Visual Studio C++ 2012 Documentation但是,我找不到is_nothrow_move_constructible在那里记录。它似乎得到了支持。

答案 2 :(得分:1)

GCC 4.7确实支持is_nothrow_move_constructible你可以通过安装MinGW Distro在Windows上试用它。

答案 3 :(得分:0)

不是答案,但我刚从查看GCC 4.7的type_traits标题的源代码中学到了一些东西:

首先,你甚至不需要 is_nothrow_xyz

noexcept运算符会告诉您是否抛出异常 因此,对于这些特定的类型特征,您可以使用它。

(或者至少在理论上。你的编译器是否实现它是另一回事。)