工具链支持C++ 11标准

Mar*_*sen 7 c++ c++11

我目前正在将我对C++的知识更新为新标准.它让我觉得自己像个小孩子才能拥有最棒的玩具:我想一直玩它,但我不想因为它而失去我的朋友.

我参与了一些开源项目,其中一些新功能非常有用,所以我非常热衷于使用它们.我的问题是有多少用户可以编译C++ 11代码,例如,普通公众中C++ 11-complete编译器的采用率是多少?有没有人有相关信息?

我知道gcc 4.8.1clang 3.3是完整的C++ 11功能,但我不知道有多少人真正使用了最新的编译器.我知道大多数codemonkeys肯定会这样做,但是普通的开源用户呢?拍摄潜在用户并告诉他们更新他们的编译器并不是一个真正的选择.

我知道这个问题可能因为与这些问题相似而受到批评/关闭:

  1. 你今天如何使用C++ 11?
  2. 使用或不使用C++ 0x功能

我想指出现在情况有所不同,因为我们正在谈论一个实际批准的标准.我相信,在编程实践中,了解其采用率非常重要.

Tem*_*Rex 6

您应该首先确定您绝对希望能够使用哪个C++ 11,然后在要支持的平台上查找支持此功能的最低编译器版本.Apache 对每个主要编译器(gcc,clang,visual c ++,intel等)的最早版本进行了很好的调查,这些编译器支持各种C++ 11功能.

根据我的经验,gcc 4.7和Clang 3.2 几乎是完整的功能(除了继承构造函数之类的东西,它们很有用但不是游戏改变者).您可以使用gcc 4.6获得许多有用的功能(但是需要4.6.3版本以避免许多错误)或Clang 3.1,这很好,因为gcc 4.6也是官方的Android NDK编译器(如果您希望支持它) .

如果您希望支持Linux,可以查看DistroWatch,您可以在其中查看为每个发行版本安装的gcc版本.例如,许多基于Ubuntu的流行发行已经在gcc 4.7上使用了将近一年,并且将在下一版本中升级到gcc 4.8.1(功能完整).

在Windows上,Nuwen Distro目前运行MinGW 4.8.1(仅32位且没有线程).Visual C++不能胜任这项工作,需要一段时间(一年或更长时间?)来获得gcc 4.8和Clang 3.3所在的位置.

即使发行版没有正式支持最新版本,也有私有软件包存储库(通常由同样的人员进行官方包装维护),提供最前沿的版本.LLVM项目甚至提供了预构建的夜间SVN快照,可以启用许多C++ 14功能(在-std=c++1y模式下).对于gcc,没有夜间包装AFAIK.

关于强制开发人员升级编译器/发行版.我不认为这是一个大问题(但@ArneMertz关于首先咨询他们的观点,在这里非常好).虚拟机安装起来轻而易举(端到端约45分钟),因此如果您只想发布二进制产品,那么请继续.对于另一个问题的用户,因此如果您提供所有常规用户需要编译的仅标题模板库,那么您的转换速度应该会更加保守.