[英]Obtaining const_iterator from iterator
是否有一个元函数f
,一个映射iterator
到其相应的const_iterator
?
即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),你想要的是什么......
我不认为这是可能的,因为迭代器类型之间通常没有明确定义的映射。 例如,两个容器可以共享非const迭代器类型,但具有不同的const迭代器。 通常,您只能从容器类型映射到迭代器类型,但不能在迭代器类型之间或从迭代器类型映射到容器类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.