是否存在将f
映射到其对应的iterator
的元函数const_iterator
?
即。 f<std::vector<T>::iterator>::type
应该产生std::vector<T>::const_iterator
。
答案 0 :(得分:4)
我不知道这样的元功能。
并非所有迭代器都有相应的const_iterator。例如。 insert_iterator。所以这样的元函数需要决定在这种情况下要做什么。
答案 1 :(得分:0)
我可以为reverse_iterator
想到一些事情:使用base
成员函数decltype
,可以提取返回类型以返回iterator
。< / p>
然而iterator
/ const_iterator
没有这样的功能,所以很难看出如何实现这一功能,缺少提供内部typedef或需要显式专业化。
答案 2 :(得分:0)
我认为您的问题的一般解决方案(也是不可移植的问题)。至少我无法想象一个: - )。
这里的难题是容器定义了const_iterator类型。要获取容器的const_iterator类型,您必须确定容器类型。
但是,如果以容器的迭代器类型作为元函数参数开始,则无法检索容器的类型。
对于已知的T(s),您可以实现所需的......
答案 3 :(得分:0)
我不认为这是可能的,因为迭代器类型之间通常没有明确定义的映射。例如,两个容器可以共享非const迭代器类型,但具有不同的const迭代器。通常,您只能从容器类型映射到迭代器类型,但不能在迭代器类型之间或从迭代器类型映射到容器类型。