tengo una clase¿Es posible obtener el tipo de valor de un iterador arbitrario (C++)?
template <typename Iterator, typename Value>
class Foo {
public:
Foo(const Iterator& it) { ... }
...
private:
map<Value, int> m_;
}
};
¿Hay alguna manera de deshacerse de valor de la plantilla? El iterador puede o no ser un iterador de STL, pero se garantiza que * es de tipo Valor.
Sé acerca de iterator_traits<T>::value_type
para los iteradores de STL, pero me pregunto si hay alguna forma de obtener el tipo de valor automáticamente para un tipo de iterador arbitrario.
Un truco que estoy pensando - por ejemplo, tenemos una clase de ayuda
template <typename Iterator, typename Value>
class Bar {
public:
Bar(const Iterator& dummy_iterator, const Value& dummmy_value) {}
...
};
Entonces, si creamos una instancia como Bar Bar (que, * él), el tipo de valor se dará a conocer en el interior bar. Pero no puedo encontrar una buena manera de combinar Bar con Foo.
Gracias, la referencia al estándar ISO C++ es útil. –