提高iterator_facade的实现

时间:2018-10-25 23:52:20

标签: c++ boost boost-iterators

我希望熟悉boost.iterator_facade实现的人可以阐明为什么选择writable_postfix_increment_proxypostfix_increment_proxy时使用以下元函数。

template <class Reference, class Value>
struct is_non_proxy_reference
  : is_convertible<
        typename remove_reference<Reference>::type
        const volatile*
      , Value const volatile*
    >
{};

可以在here中找到它,并用在元函数postfix_increment_result中,该元函数选择后缀运算符应返回代理还是仅返回迭代器。 postfix_increment_result的其余部分似乎很清楚。像..

如果iter :: reference是可读的,并且类别基本上与input_iterator_tag或output_iterator_tag等效,则返回代理。

但是我对is_non_proxy_reference感到困惑,在trueReference相同而忽略了简历限定词的情况下,它似乎是Value。在这种情况下,将使用postfix_increment_proxy<Iterator>和其他writable_postfix_increment_proxy<Iterator>

Reference何时将与Value成为不同的“基本类型”?如果需要,这是否支持返回自己的代理类型?还是其他?

0 个答案:

没有答案