Как объявить значение итератора через decltype

В C ++ 98 я обычно использую следующее для объявления переменной в итераторе:Тип значения s:

typename std::iterator_traits::value_type value;

В C ++ 11 у нас есть decltype, и я подумал, что самый простой способ определить тип значения:

decltype(*iterator) value;

К сожалению, для большинства итераторов тип * iterator равен value_type & а не value_type. Любые идеи, без классов модификации типа, как втиснуть вышеупомянутое в получение value_type (а не какой-либо ссылки)?

Я неНе думаю, что вопрос неразумен, учитывая, что следующее довольно надежно, но в итоге создает другую переменную.

auto x = *iterator;
decltype(x) value;

Также обратите внимание, что я действительно хочувыведенный тип и не толькопример например если бы я хотел объявить std :: vector этих значений.

Ответы на вопрос(2)

Ваш ответ на вопрос