使用 C++20 <ranges> 可以对 <set> 进行单行初始化吗?

Is one-line initialization of a <set> possible with C++20 <ranges>?

我想知道在 C++20 中使用 <ranges> 是否最终可以从一个序列中 select 并在一行中初始化一个 set ,这是可能的在 C# 中使用 IEnumerable。这可能需要将 <ranges> 对象转换为 std::initializer_list.

C#:

int[] sequence = new int[] { 0,1,2,3,4 };
HashSet<int> set = new HashSet<int>(sequence.Where((int i) => i % 2 == 0));

C++:

std::vector<int> sequence { 0,1,2,3,4 };
auto matcher = sequence | std::ranges::views::filter([](int i) { return !(i % 2); });
std::set<int> myset(matcher.begin(), matcher.end());

我想做这样的事情:

std::vector<int> sequence { 0,1,2,3,4 };
std::set<int> myset { sequence | std::ranges::views::filter([](int i) { return !(i % 2); }) };

目前暂时还做不到,但在不久的将来,我们可以得到ranges::to,它将具有这样的功能。