Obtenga el tipo de contenedor de (su) tipo de iterador en C ++ (STL)

Es fácil dado un contenedor para obtener los iteradores asociados, por ejemplo:

std::vector<double>::iterator i; //An iterator to a std::vector<double>

Me preguntaba si es posible, dado un tipo de iterador, deducir el tipo del "contenedor correspondiente" (aquí supongo que para cada contenedor hay un único iterador (no constante)).

Más precisamente, me gustaría una metafunción de plantilla que funcione con todos los contenedores STL (sin tener que especializarla manualmente para cada contenedor) de modo que, por ejemplo:

ContainerOf< std::vector<double>::iterator >::type 

evalúa a

std::vector<double>

¿Es posible? Si no, ¿por qué?

¡Gracias de antemano por cualquier ayuda!

Respuestas a la pregunta(4)

Su respuesta a la pregunta