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类型?
一招我在想 - 比方说,我们有一个辅助类
template <typename Iterator, typename Value>
class Bar {
public:
Bar(const Iterator& dummy_iterator, const Value& dummmy_value) {}
...
};
然后如果我们实例酒吧,酒吧(它,*它),值的类型将里面酒吧是已知的。但是我找不到将Bar与Foo结合的好方法。
谢谢,所述参考ISO C++标准是有帮助的。 – 2009-07-10 18:10:50