C++ 从迭代器获取常量迭代器

C++ 从迭代器获取常量迭代器,c++,stl,iterator,metaprogramming,constants,C++,Stl,Iterator,Metaprogramming,Constants,是否有一个元函数f将迭代器映射到其相应的常量迭代器 也就是说,f::type应该产生std::vector::const_迭代器我可以为反向迭代器:使用基成员函数decltype,可以提取返回类型返回到迭代器 但是,对于迭代器/常量迭代器,没有这样的函数,因此很难看到如何实现这一点,除非提供内部类型定义或需要显式专门化。我不知道有这样的元函数 并非所有迭代器都有相应的常量迭代器。例如,插入迭代器。因此,这样一个元函数需要决定在这种情况下它将做什么。我认为对您的问题有一个通用的解决方案(而且也不可

是否有一个元函数
f
迭代器
映射到其相应的
常量迭代器


也就是说,
f::type
应该产生
std::vector::const_迭代器

我可以为
反向迭代器
:使用
成员函数
decltype
,可以提取返回类型返回到
迭代器


但是,对于
迭代器
/
常量迭代器
,没有这样的函数,因此很难看到如何实现这一点,除非提供内部类型定义或需要显式专门化。

我不知道有这样的元函数


并非所有迭代器都有相应的常量迭代器。例如,插入迭代器。因此,这样一个元函数需要决定在这种情况下它将做什么。

我认为对您的问题有一个通用的解决方案(而且也不可能是可移植的)。至少我无法想象一个:-)

这里的难题是容器定义常量迭代器类型。要获得容器的常量迭代器类型,必须确定容器类型

但是,如果以容器的迭代器类型作为元函数参数,则无法检索容器的类型


对于已知的T(s),您想要的可以实现,但是…

我认为这是不可能的,因为迭代器类型之间通常没有定义良好的映射。例如,两个容器可以共享非常量迭代器类型,但具有不同的常量迭代器。通常,只能从容器类型映射到迭代器类型,但不能在迭代器类型之间或从迭代器类型映射到容器类型