私はクラス任意のイテレータ(C++)から値の型を取得できますか?
template <typename Iterator, typename Value>
class Foo {
public:
Foo(const Iterator& it) { ... }
...
private:
map<Value, int> m_;
}
};
を持っているが、テンプレートに値を取り除く方法はありますか?イテレータはSTLイテレータであってもそうでなくてもかまいませんが、その型がValueであることが保証されています。
私はSTLイテレータについてはiterator_traits<T>::value_type
を知っていますが、任意のイテレータタイプに対してValue型を自動的に取得する方法があるのだろうか?私が考えている
1つのトリック - と言うが、我々はヘルパークラスを持っている
template <typename Iterator, typename Value>
class Bar {
public:
Bar(const Iterator& dummy_iterator, const Value& dummmy_value) {}
...
};
その後、我々はバー(それ、*それ)としてバーをインスタンス化した場合、値の型がバーの内側に知られるであろう。しかし、私はBarとFooを組み合わせる良い方法を見つけることができません。
ありがとう、ISO C++標準への参照が役立ちます。 –