是否有任何适用于 Windows 的 C++11 编译器支持新的 C++11 类型特征,例如is_nothrow_move_constructible
?
我试图编写一个支持它的容器,却发现我的编译器(VC++ 2010,TDM MinGW32 GCC 4.6)都不支持它......
是否有任何适用于 Windows 的 C++11 编译器支持新的 C++11 类型特征,例如is_nothrow_move_constructible
?
我试图编写一个支持它的容器,却发现我的编译器(VC++ 2010,TDM MinGW32 GCC 4.6)都不支持它......
对于 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 及更高版本的更新功能的支持。
根据参考资料,Visual Studio C++ 2012 Beta 支持很多 C++11 类型特征。查看Visual Studio C++ 2012 文档但是,我找不到is_nothrow_move_constructible
那里的文档。不过好像是支持的。
GCC 4.7 确实支持 is_nothrow_move_constructible 你可以通过安装 MinGW Distro在 Windows 上试用它。
不是答案,但我只是从查看 GCC 4.7type_traits
标头的源代码中学到了一些东西:
你甚至不需要 is_nothrow_xyz
放在首位!
运算符会noexcept
告诉您是否抛出异常。
因此,对于这些特定的类型特征,您可以改用它。
(或者至少在理论上。您的编译器是否实现它是另一回事。)