是 GCC 6.2 或更高版本中的 C++20 实验范围

Is the C++20 Experimental Ranges in GCC 6.2 or above?

本文关键字:版本 C++20 范围 实验 GCC 高版本      更新时间:2023-10-16

我想尝试使用 C++20 实验范围库。我试图四处搜索,看看它是否在GNU编译器集合(GCC(6.2或更高版本中实现,但没有找到任何信息。范围库是否在 GCC 中实现?

到目前为止,

我还没有找到任何官方文档说明GCC支持实验性Ranges,所以答案似乎是否定的。

另外,Eric Niebler 有一个 Ranges 的"参考"实现,你可以在 github 上找到它。
已知该代码适用于以下编译器:
- 叮当 3.6.2(或更高版本(
- GCC 4.9.4(或更高版本((C++14 支持需要 GCC 5.2;C++14 "扩展 constexpr" 支持在 6.1 之前很差。
- "Clang with Microsoft CodeGen" (Clang/C2( VS2015 Update 3(或更高版本(

Ranges库与GCC是

分开的,尽管GCC是目前唯一支持Ranges的编译器。Eric Niebler 的 range-v3 库非常有用,但它与 Range TS 有很大不同。实现Ranges TS的库称为cmcstl2,主要由Casey Carter编写,Eric Niebler也做出了许多贡献。它实际上自 2015 年以来一直存在。

此库仅是标头,您只需将其包含目录添加到包含路径。我定义了一个 bash 别名以便快速使用(您可能想做类似的事情(:

alias gconcepts='g++ -fconcepts -std=c++17 -I$HOME/cmcstl2/include'