相关疑难解决方法(0)

创建自己的(可管道化的)范围 ::views 和 ::actions 的规则是什么?

这个答案中,我们可以看到我们可以创建自己的views. 我试过了:

template <typename Range>
struct squared_view : std::ranges::view_interface<squared_view<Range>> {
    struct iterator;

    constexpr squared_view() = default;
    constexpr squared_view(Range t): t(t) { }

    auto begin() const { return iterator(std::ranges::begin(t)); }
    auto end() const { return iterator(std::ranges::end(t)); }

    Range t;
};

template <typename Range>
struct squared_view<Range>::iterator {
    using value_type = typename std::ranges::iterator_t<Range>::value_type;

    constexpr iterator() = default;
    constexpr iterator(std::ranges::iterator_t<Range> it): it_{it} { }

    iterator& operator++() {
        ++it_;
        return *this;
    }

    iterator operator++(int) {
        const iterator current{*this};
        ++it_;
        return current; …
Run Code Online (Sandbox Code Playgroud)

c++ c++20 std-ranges

5
推荐指数
1
解决办法
210
查看次数

标签 统计

c++ ×1

c++20 ×1

std-ranges ×1