C++11:有人能推荐一些书和编译器吗?在我的项目中使用C++11是个好主意吗?Qt Creator 2.5支持C++11吗?

3
截至2012年5月23日,我希望开始使用C++11编码,并在所有项目中使用它,因为我看到了许多我非常喜欢的新功能。但是,我拥有的编译器都不支持任何来自C++11的内容。有人可以推荐一些书籍和编译器吗?在我的项目中使用C++11是个好主意吗?Qt Creator 2.5支持C++11吗?

1
g++ 4.7支持许多C++11的主要特性。 - Seth Carnegie
1
查看c++11标签wiki。目前支持C++11特性最多的两个编译器是GCC 4.7和Clang 3.1(昨天发布)。 - R. Martinho Fernandes
2
请问您是否需要源代码的可移植性。这将影响您的决策。 - Paul Beckingham
需要注意的是,如果您需要编写可移植的代码,您需要非常谨慎地使用C++11功能。这些功能是新的,这意味着它们相对于C++98/03的功能来说测试不充分。所有编译器都存在许多与这些新功能相关的错误(包括gcc 4.7和clang 3.1)。 - James McNellis
C++11书籍:https://dev59.com/AmLVa4cB1Zd3GeqPxY2P#10099211 - mavam
2个回答

14

选择编译器将取决于您正在开发的平台。

Gcc 4.7和Clang似乎支持最多的C++11特性,但我认为它们在Windows上的支持主要限于mingw,并且我相信即使在那里,clang的支持也很有限。Intel C++没有像gcc或clang那样多的C++11支持,但比VC++更多,并且支持Windows。 VC++ 11是一个非常好的编译器,对Windows的支持也很好,但不幸的是,就C++11功能而言,它今天落后了,缺少可变参数模板、初始化列表和统一初始化、用户定义的字面量、constexpr、新字符串字面量、默认/删除函数、委托/继承构造函数、模板类型别名等。

如果目标是Linux,则gcc显然对其有很好的支持,而我认为clang并不太落后。如果针对BSD或OS X,则Clang是明显的选择。

如果目标是多个平台,则必须限制自己使用所有编译器都支持的C++11子集。

C++11编译器支持:http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport


C++11图书刚刚开始出版。有一本新版本的《C++标准库:教程与参考》C++ Concurrency In Action相当全面地涵盖了新的内存模型、多线程和原子操作等内容。据我所知,到目前为止,这些就是唯一的几本。然而,有许多在线文章和资源可用,应该足以入门:

文章和论文

会议


如果缺乏支持不会阻止您使用C++11,那么这是一个很好的想法。


Qt Creator 2.5对于C++11有一定的支持:http://labs.qt.nokia.com/2012/03/15/qt-creator-2-5-beta/


非常全面和写得很好。非常愉快的阅读,谢谢。 - Drise
Visual C++在Visual Studio 11 Beta中具有相当不错的C++11支持,包括一个基本完整的C++11标准库实现,其中包括线程、原子等功能。 - mattnewport
@mattnewport VC++ 11是一款很棒的编译器,但不幸的是,在C++11支持方面,它已经落后于其他编译器。它是最早实现lambda、auto和rvalue引用之一。但现在其他编译器已经通过初始化列表、可变参数模板、constexpr、新字符串字面量和许多其他C++11特性超越了它。VC++库很好,其中一些东西不在gcc库中。我认为clang库完全完整,其他编译器我不确定。 - bames53

0
我从http://nuwen.net/mingw.html下载了一个gcc 4.7二进制文件,这让我可以使用大多数C++11功能。安装和设置非常容易(我在Windows 7上使用Code::Blocks 10.05)。唯一的小问题是它没有附带gdb,但很容易找到、下载和安装。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接