Example from the article:
std::vector widgets =
std::set ids = stream::MakeStream::from(widgets)
.map(&Widget::getId)
.to_set();
(ignoring missing template arguments for std::vectorand std::set) in ranges-v3:
std::vector<Widget> widgets =
std::set<Widget::ID> ids = widgets | ranges::view::transform(&Widget::getId);
Yes, transformequivalent mapin streams.
-v3 Invokable Projections, , , , Widget :
widgets |= ranges::action::sort(std::greater<Widget::ID>{}, &Widget::getId);