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