最新发布的GCC 9是否支持C++20范围库?
我从以下链接复制了范围库的示例代码: https://en.cppreference.com/w/cpp/ranges
#include <vector>
#include <ranges>
#include <iostream>
int main()
{
std::vector<int> ints{0,1,2,3,4,5};
auto even = [](int i){ return 0 == i % 2; };
auto square = [](int i) { return i * i; };
for (int i : ints | std::view::filter(even) | std::view::transform(square)) {
std::cout << i << ' ';
}
}
但是,当使用g++ 9.1(Ubuntu 18.04 LTS(Bionic Beaver))编译时,会报告找不到<ranges>
:
$ g++ -std=c++2a cpp2a.cpp
cpp2a.cpp:2:10: fatal error: ranges: No such file or directory
2 | #include <ranges>
| ^~~~~~~~
compilation terminated.
我有什么遗漏吗?
而且ranges库会随着GCC 9系列的到来而到达吗?
(0...5).select { |x| x % 2 == 0 }.map { |x| x*x }
一样优美。std::adverb::There std::verb::are std::adjective::just std::adjective::too std::adjective::many std::noun::scopes.
- Alexanderusing std::view::filter
,然后使用filter
而无需限定符。事实上,建议这么做,因为完全限定的名称会禁用 Koenig查找。 - Ben Voigt