我很确定它是不可能的,但只是为了获得确定性 - 是否可以在集合的迭代器上调用不同的一元运算符*“重载”(?),具体取决于基于范围的已使用类型。我特别感兴趣的是调用两个不同的重载:
Item()
和
for (auto &e: collection)
但对于给定类型的for (auto e: collection)
,问题可以更加概括。
答案 0 :(得分:1)
我不知道这是可能的。
但是你可以通过迭代不同的代理对象来获得类似的行为:
for (auto &&e: collection.method1())
// ...
for (auto &&e: collection.method2())
method1
和method2
返回的代理对象实现begin
和end
函数,它们返回不同类型的迭代器,它们以不同的方式实现operator*
。