介绍
随着即将推出的 Ranges 库,用两个迭代器表示范围的需要几乎消失了。例如,代替
if (std::equal(begin(foo), end(foo), begin(bar), end(bar)))
we have
if (std::ranges::equal(foo, bar))
后者可以说是优越的,不仅因为它简洁,而且因为它防止了省略的常见陷阱end(bar)
并欢迎绑定错误。
Problem
下面的代码怎么样?
std::vector<int> vec{begin(foo), end(foo)};
where foo
是一个范围。对于范围,我希望将其简化为
std::vector<int> vec{foo};
但是,我在其中找不到任何提及它的内容[vector] http://eel.is/c++draft/vector or [容器.要求] http://eel.is/c++draft/container.requirements。 Ranges 库也没有引入一组新的容器。
为什么 Ranges 库不支持范围内的容器初始化?理由是什么?