Ho una classeÈ possibile ottenere il tipo di valore da un iteratore arbitrario (C++)?
template <typename Iterator, typename Value>
class Foo {
public:
Foo(const Iterator& it) { ... }
...
private:
map<Value, int> m_;
}
};
C'è un modo per sbarazzarsi di valore nel modello? L'Iterator può o non può essere un iteratore STL, ma è garantito che * digita il valore.
So di iterator_traits<T>::value_type
per gli iteratori STL, ma mi chiedo se c'è un modo per ottenere automaticamente il tipo di valore per un tipo Iterator arbitrario?
Un trucco che sto pensando - per esempio, abbiamo una classe di supporto
template <typename Iterator, typename Value>
class Bar {
public:
Bar(const Iterator& dummy_iterator, const Value& dummmy_value) {}
...
};
Poi se istanziamo Bar come Bar (it, * esso), il tipo di valore sarà conosciuta all'interno Bar. Ma non riesco a trovare un buon modo per combinare Bar con Foo.
Grazie, il riferimento alla norma ISO C++ è utile. –