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 を宣言したい場合など、インスタンスだけでなく、推定された型が本当に必要であることにも注意してください。