目前,我正在将C++方面的知识更新到新标准。这让我觉得自己像个刚刚得到最可怕的玩具的小孩:我一直想玩它,但我不想因为它而失去我的朋友。
我参与了一些开源项目,其中一些新特性将非常有用,所以我非常热衷于使用它们。我的问题是,有多少用户可以编译C++11代码,例如,C++11完全编译器在公众中的采用率是多少?有人有相关信息吗?
我知道gcc 4.8.1和clang 3.3已经完成了C++11特性,但我不知道到底有多少人使用最新的编译器。我知道大多数codemonkeys当然会这么做,但是对于普通的开源用户来说呢?当面扇潜在的用户并告诉他们更新编译器并不是一个真正的选择。
我知道这个问题可能会因与这些问题相似而受到批评或封闭:
我想指出,现在的情况是不一样的,因为我们所谈论的是一个实际批准的标准。我认为,了解其采用率在实践中对方案拟订是重要的。
发布于 2013-08-22 09:44:58
您可能首先应该决定您绝对希望能够使用哪个C++11,然后在您想要支持的平台上查找支持该功能的最低编译器版本。Apache拥有每个主要编译器的最早版本的一次不错的调查 (gcc、clang、visual c++、intel等)。它支持各种C++11特性。
在我的经验中,gcc 4.7和Clang 3.2几乎都完成了功能(除了继承构造函数之类的东西,它们很有用,但不会改变游戏规则)。使用gcc 4.6 (但使用4.6.3版本以避免许多but)或Clang 3.1可以获得许多有用的特性,这是很好的,因为gcc 4.6也是官方的Android编译器(如果您想支持的话)。
如果您希望支持Linux,您可以查看DistroWatch,在那里您可以看到每个发行版安装了哪些gcc版本。例如,许多基于Ubuntu的流行发行版已经在gcc 4.7上发布了将近一年的时间,并将在下一个版本中升级到gcc 4.8.1 (功能完成)。
在Windows上,努文区当前运行MinGW 4.8.1 (只有32位,没有线程)。Visual C++不能胜任这项工作,需要一段时间(一年或更长时间?)以达到gcc 4.8和Clang 3.3的位置。
即使发行版不正式支持最近的版本,也有私有包存储库 (通常由同样的人负责官方打包)提供尖端功能。LLVM项目甚至提供了预置每晚SVN快照,它启用了许多C++14特性(在-std=c++1y模式下)。对于gcc来说,没有每晚的包裹AFAIK。
强迫开发人员升级编译器/发行版。我不认为这是什么大问题(但@ArneMertz关于先与他们协商的观点在这里非常好)。虚拟机很容易安装(大约45分钟的端到端),所以如果你只想发布一个二进制的产品,那就继续吧。对于用户来说,这是另一回事,因此,如果您提供的是所有常规用户都需要编译的标头模板库,这将使您在过渡过程中更加保守。
发布于 2013-08-22 09:51:29
我认为这是一个很难回答的问题,因为这是一个有点宽泛的问题。你问的是“公众收养”,这很大程度上取决于你如何定义它。
我要说的是,在大多数公司中,采用新的编译器是缓慢的,因为对于较大的项目来说,改变工具链的一部分会带来一些成本和风险。尤其是对于更大和“老”的公司来说更是如此。规模较小的初创企业往往更有可能采用新技术。
另一方面,开源项目通常是由那些为了好玩而编程的人组成的,他们热衷于采用新的有前途的东西。我相信,你们的许多其他贡献者也会和你们一样。如果不了解项目的更多情况,就不能说您的用户社区是如何采用新的编译器的。有些项目和社区只想让程序工作而不关心新的编译器,还有一些社区希望你使用最新的技术,因为它很酷,更快,更好,什么都行。
底线:询问项目的其他贡献者如何考虑采用新标准,以及项目的用户社区。
https://stackoverflow.com/questions/18376360
复制相似问题