Imaginemos que quiero hacer una función de plantilla que devuelva el primer elemento de cualquier contenedor stl. La manera general sería:¿Cómo probar si el parámetro de plantilla es un contenedor asociativo de par?
template<typename Container>
Container::value_type first(Container c){
return *(c.begin());
}
Esto funciona para vectores, listas, deques, conjuntos y así sucesivamente.
Sin embargo, para los envases par asociativos (std :: mapa), si les gustaría tener
return c.begin()->second;
¿Cómo podría probar (en la función o con la especialización de plantilla) si tengo un contenedor asociativo par?
El contenedor STL parece no tener ningún rasgo asociado. ¿Es posible verificar si tiene un :: key_type?
Nice answer. Para que compile, ';' faltan al final de las estructuras y .front() no funciona para todo –
Oups, que lo que obtiene al responder demasiado rápido: he agregado el ';' perdido y reemplazado 'frontal' por un sin referencia 'comenzar' :) –