Как объявить значение итератора через decltype
В C ++ 98 я обычно использую следующее для объявления переменной в типе значения итератора:
typename std::iterator_traits<Iterator>::value_type value;
В C ++ 11 у нас есть decltype, и я подумал, что самый простой способ определить тип значения:
decltype(*iterator) value;
К сожалению, для большинства итераторов тип * iterator имеет значение value_type &, а не value_type. Любые идеи, без классов модификации типа, как втиснуть вышеупомянутое в получение value_type (а не какой-либо ссылки)?
Я не думаю, что вопрос является необоснованным, учитывая, что следующее довольно надежно, но в итоге создает другую переменную.
auto x = *iterator;
decltype(x) value;
Также обратите внимание, что я действительно хочувыведенный тип и не толькоэкземпляр например если бы я хотел объявить std :: vector этих значений.