是否有一個元函數f
將iterator
映射到其對應的const_iterator
?從迭代器中獲取const_iterator
I.e. f<std::vector<T>::iterator>::type
應該產生std::vector<T>::const_iterator
。
是否有一個元函數f
將iterator
映射到其對應的const_iterator
?從迭代器中獲取const_iterator
I.e. f<std::vector<T>::iterator>::type
應該產生std::vector<T>::const_iterator
。
我不知道這樣的元函數。
並非所有迭代器都有相應的const_iterator。例如。 insert_iterator。所以這樣的元函數需要決定在這種情況下要做什麼。
我可以想象一下reverse_iterator
:使用base
成員函數decltype
,可以提取返回類型以返回iterator
。
然而,iterator
/const_iterator
沒有這樣的功能,所以很難看出如何實現這個功能,而不是提供內部typedef或需要顯式專門化。
我認爲你的問題的一個通用的解決方案(和一個也是可移植的是不可能的)。至少我無法想象一個:-)。
這裏的難題是容器定義了const_iterator類型。要獲得容器的const_iterator類型,您必須確定容器類型。
但是,如果您將容器的迭代器類型作爲元函數參數啓動,則無法檢索容器的類型。
對於要然而能夠實現什麼樣的已知T(S)...
我不認爲這是可能的,因爲有迭代器類型之間往往沒有明確的映射。例如,兩個容器可以共享非常量迭代器類型,但是具有不同的常量迭代器。通常,只能從容器類型映射到迭代器類型,而不能在迭代器類型之間或從迭代器類型到容器類型之間映射。