我正在启动一个新的C++项目,我可能会继续工作很长一段时间(至少一年)。我正在努力跟上C++20,我很想开始使用一些新特性。我并不关心支持多个编译器(GCC或Clang就足够了)。到目前为止,我只对其中一些特性进行了实验,但从未考虑过在实际项目中使用C++20特性。
编辑:我最初的问题是关于C++20标准的当前状态以及编译器对它的支持。我被要求缩小实际问题的范围,所以我将坚持使用C++20的主要原因:
我感兴趣的主要特性是概念。我用-fconcepts旗帜对GCC的概念进行了实验。据我所知,这应该与概念TS相对应。但是,目前标准中的概念状况如何呢?我注意到,TS和我在C++20上找到的其他来源之间有一些细微的语法差异。使用当前GCC的实现(或者其他编译器,这做得更好)在实际最终确定的标准中是有效的(至少有很高的概率)是现实的吗?是否有任何可靠的来源来跟踪目前商定的概念和其他特性的规范?
最初的问题如下:
C++20标准的状态是什么?什么时候可以预期它是完整的,或者至少在这样的状态下,我可以安全地使用它,而不必担心我的代码在最终标准中无效?我使用优先选择作为语言细节信息的主要来源。当它说since C++20,这是否意味着,它是一个最终的版本,将保持在标准?
C++20支持的状态是什么?C++20什么时候可以完全实现(或者至少是最重要的部分),在GCC、Clang或者MSVC中?特别是,概念和模块的状态如何?我知道GCC对-fconcepts的概念有实验性的支持(尽管优先选择说它只支持"TS“),GCC的一个分支可以用-fmodules支持模块(但不支持概念)。
发布于 2019-10-01 13:48:29
C++20标准,赤裸裸的灾难性环境,将在.2020年。这不是火箭科学;)
在上一次标准会议上,C++20草案被指定为完整的特性,因此通常不会添加新的内容。特征被移除或发生重大改变的可能性也很低,但不是零。
至于对各种C++20特性的支持,这需要时间。不仅如此,上述支持还需要更长时间才能达到成熟。如果您只想使用C++20特性,那么在2020年的某个时候,您可以在一些编译器中对许多C++20特性这样做是很好的。但是,如果您想实际生产一个稳定的产品,最好等到2021年或2022年编译器/库的成熟。
与其他编译器相比,Visual实现功能所需的时间更长。但一般来说,它们实现库特性所需的时间较少,通常在交付任何依赖的语言特性时都会立即这样做。相比之下,libc++和libstdc++在实现库特性方面往往比它们各自的编译器在完成语言特性方面慢得多。
对于C++20来说,微软一直在大力推动协同和模块,目前它们都有最成熟的实现。所以如果这就是你要找的,VS很可能会让你比其他人更多的报道。
https://stackoverflow.com/questions/58185100
复制相似问题