1

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

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

4

4 回答 4

3

对于 mingw,我会在这里推荐 STL 的发行版(gcc 4.7.1)。它还带有 boost 1.50。

还有 mingw-w64(原始 mingw 的一个分支),我在这里推荐 rubenvb 的个人构建Toolchains targetting Win32如果您想要 32 位版本,请转到。他也有自己的 clang 版本(windows 上的 clang 支持仍然有很多错误。x64 版本会报告链接器错误,因此只能用于更好的诊断等)

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

有关 mingw-w64 命名约定的更多信息,请参见此处常见问题解答

于 2012-08-17T07:40:04.473 回答
2

根据参考资料,Visual Studio C++ 2012 Beta 支持很多 C++11 类型特征。查看Visual Studio C++ 2012 文档但是,我找不到is_nothrow_move_constructible那里的文档。不过好像是支持的。

于 2012-08-17T07:26:13.330 回答
1

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

于 2012-08-17T07:43:34.263 回答
0

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

你甚至不需要 is_nothrow_xyz放在首位!

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

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

于 2012-08-17T07:46:23.493 回答