Повысьте реализацию iterator_facade
Я надеюсь, что кто-то, знакомый с реализацией boost iterator_facade, сможет пролить свет на то, почему следующая мета-функция используется при выборе writable_postfix_increment_proxy
или же postfix_increment_proxy
,
template <class Reference, class Value>
struct is_non_proxy_reference
: is_convertible<
typename remove_reference<Reference>::type
const volatile*
, Value const volatile*
>
{};
Это можно найти здесь и использовать в метафункции postfix_increment_result, которая выбирает, должен ли оператор postfix возвращать либо прокси, либо просто итератор. Остаток от postfix_increment_result
кажется довольно ясно. Что-то вроде..
если iter::reference доступен для чтения и категория в основном эквивалентна input_iterator_tag или output_iterator_tag, тогда возвращается прокси.
Однако я смущен is_non_proxy_reference
, который, кажется, true
в том случае, если Reference
такой же как Value
игнорирование квалификаторов cv. В таком случае postfix_increment_proxy<Iterator>
еще writable_postfix_increment_proxy<Iterator>
в б.
Когда Reference
будет другой "базовый тип" Value
? Это для поддержки возврата вашего собственного типа прокси, если вы хотели? Или что-то другое?