¿Cómo recuperar el tipo de valor del iterador en C++?

¿Cómo recuperar el tipo de valor del iterador en C++?

typename std::iterator_traits<Iter>::value_type

Esto funcionará si su plantilla se instancia con Iter como un tipo de puntero.

Por cierto, typename no es parte del tipo en sí. Le dice al compilador que value_type realmente es un tipo. Si era el nombre de una función o un miembro de datos estáticos, eso afecta la sintaxis. El compilador no necesariamente sabe qué es, ya que la especialización de iterator_traits para Iter podría no estar visible cuando se compila la plantilla.