我参与了一些开源项目,其中一些新功能非常有用,所以我非常热衷于使用它们.我的问题是有多少用户可以编译C 11代码,例如一般公众对C 11完整编译器的采用率是多少?有没有人有相关信息?
我知道gcc 4.8.1和clang 3.3是C 11功能完整,但我不知道有多少人实际使用了最新的编译器.我知道大多数codemonkeys肯定会这样做,但普通的开源用户呢?拍摄潜在用户并告诉他们更新他们的编译器并不是一个真正的选择.
我知道这个问题可能因为与这些问题类似而受到批评/关闭:
> How are you using C++11 today?
> To use or not to use C++0x features
我想指出现在情况有所不同,因为我们正在谈论一个实际批准的标准.我认为,在编程实践中,了解其采用率非常重要.
解决方法
根据我的经验,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所在的位置.
即使发行版没有正式支持最近的版本,也有private package repositories(通常由同样的人保持正式包装)提供最前沿的版本. LLVM项目甚至提供了启用许多C 14功能的pre-built nightly SVN snapshots(在-std = c 1y模式下).对于gcc,没有夜间包装AFAIK.
关于强制开发人员升级编译器/发行版.我不认为这是一个大问题(但@ArneMertz关于首先咨询他们的观点,在这里非常好).安装虚拟机是轻而易举的(端到端约45分钟),因此如果您只想发布仅二进制产品,那么请继续.对于另一个问题的用户,如果您提供所有常规用户需要编译的仅标题模板库,那么这应该会使您在转换速度上更加保守.