История изменений
Исправление proud_anon, (текущая версия) :
Функция итератора operator->() возвращает указатель.
Я не очень большой специалист по C++, но по-моему, функция Iterator::operator->() должна возвращать тип Iterator::pointer, который не обязан быть голым указателем.
Почему нельзя использовать сам итератор вместо указателя?
Если нельзя, попробуй сделать &(*iptr), но не знаю, может ли это вызвать UB и при каких условиях.
Исправление proud_anon, :
Функция итератора operator->() возвращает указатель.
Я не очень большой специалист по C++, но по-моему, функция Iterator::operator->() должна возвращать тип Iterator::pointer, который не обязан быть голым указателем.
Почему нельзя использовать сам итератор вместо указателя?
Исправление proud_anon, :
Функция итератора operator->() возвращает указатель.
Я не очень большой специалист по C++, но по-моему, функция Iterator::operator->() должна возвращать тип Iterator::pointer, который не обязан быть голым указателем.
Итак, во-первых, почему нельзя использовать сам итератор вместо указателя?
Во-вторых, если уж надо указатель, может быть, можно сделать &(*iptr)? Не знаю, правда, не является ли это UB.
Update: вот, выше уже привели пример с std::vector<bool>, когда &(*Iterator) вызовет неопределённое поведение.
Исходная версия proud_anon, :
Функция итератора operator->() возвращает указатель.
Я не очень большой специалист по C++, но по-моему, функция Iterator::operator->() должна возвращать тип Iterator::pointer, который не обязан быть голым указателем.
Итак, во-первых, почему нельзя использовать сам итератор вместо указателя?
Во-вторых, если уж надо указатель, может быть, можно сделать &(*iptr)? Не знаю, правда, не является ли это UB.