ericniebler / range-v3

Range library for C++14/17/20, basis for C++20's std::ranges
Other
4.11k stars 440 forks source link

ranges::to isn't a range adaptor closure object? #1611

Open marehr opened 3 years ago

marehr commented 3 years ago

Hi! This is more a question than a bug report.

I thought that range adaptor closure object, so a range adaptor that already bound it's possible arguments, allows the following syntax:

#include <range/v3/range/conversion.hpp>
#include <list>
#include <vector>

int main()
{
    std::list<int> list{1, 2, 3};
    // directly
    std::vector v1 = ranges::to<std::vector>(list);
    std::vector v2 = list | ranges::to<std::vector>;

    // as object
    auto adaptor = ranges::to<std::vector>;
    std::vector v3 = list | adaptor;
    std::vector v4 = adaptor(list); // does not compile
}

https://godbolt.org/z/Eb9Wen

Thank you!