小编edf*_*ers的帖子

Range-v3:使用view_facade提供const和非const迭代器

我在使用view_facade(来自range-v3)创建一个提供const和非const访问的视图时遇到了麻烦.作为一个例子,我尝试修改view_facade测试(在test/view_facade.cpp中)以允许非const访问(默认情况下它只允许const访问):

struct MyRange
  : ranges::range_facade<MyRange>
{
private:
    friend struct ranges::range_access;
    std::vector<int> ints_;

    template <bool isConst>
    struct cursor
    {
    private:
        using It = typename std::conditional<isConst, std::vector<int>::const_iterator, std::vector<int>::iterator>::type;
        using RefType = typename std::conditional<isConst, int const&, int&>::type;
        It iter;
    public:
        cursor() = default;
        cursor(It it)
          : iter(it)
        {}
        RefType current() const
        {
            return *iter;
        }
    //...
    };
/*    // Uncommenting these overloads will cause an error, below.
    cursor<true> begin_cursor() const
    {
        return {ints_.begin()};
    }
    cursor<true> end_cursor() const
    {
        return {ints_.end()};
    } …
Run Code Online (Sandbox Code Playgroud)

c++ range-v3

8
推荐指数
1
解决办法
586
查看次数

标签 统计

c++ ×1

range-v3 ×1