假设我想创建一个现代 C++ 应用程序。我有零遗留代码,需要与 c++98/03 向后兼容。有理由选择 c++11 或 c++14 而不是 c++17 吗?
通过研究,c++11 和 c++17 之间似乎没有任何重大变化。看起来c++17就是c++11,功能越来越多。我意识到支持 c++11 功能的编译器比所有新的 c++17 更改还要多。
因此编译器支持是一个考虑因素,因为它会影响可移植性。另外,c++17 尚未正式发布,但在某个时候它会发布。
为了在 C++11 和 C++17 之间进行选择,我应该评估哪些标准?我正在寻找非基于意见的原因。
谢谢!
最佳答案
我觉得这会因为含糊不清、基于意见而结束,但到底是什么。请记住,14 也在 11 到 17 之间,并且支持范围更广。我能想到,现在基本上没有理由在新代码库中使用 11 而不是 14。对于17,问题就像你说的,编译器支持。如果您需要以 Windows 为目标,MSVC 仍然缺少大量 17 支持:http://en.cppreference.com/w/cpp/compiler_support#C.2B.2B17_features .
为了立即编写跨平台的 17 种代码,您几乎肯定需要一些重型持续集成,以便每次推送时在至少 2 个(如果不是 3 个)编译器上构建和运行您的代码。
如果您不以 Windows 为目标,或者即使您只能致力于单个编译器,我认为没有任何理由不使用 17。(我的意思是:如果您仅以 MSVC 为目标,则支持 17已经完成了,但是使用可用的东西没有什么缺点,如果不支持某些东西,它就不会构建。当你支持支持不同东西的不同编译器,并且你没有在本地构建它们时,它就变成了一场噩梦) .
关于c++11 - 是否有特定时间使用 c++11 而不是 c++17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805157/