是否可以根据基于范围的类型调用取消引用运算符的不同重载

时间:2016-05-09 16:08:52

标签: c++ c++11 operator-overloading

我很确定它是不可能的,但只是为了获得确定性 - 是否可以在集合的迭代器上调用不同的一元运算符*“重载”(?),具体取决于基于范围的已使用类型。我特别感兴趣的是调用两个不同的重载:

Item()

for (auto &e: collection)

但对于给定类型的for (auto e: collection) ,问题可以更加概括。

1 个答案:

答案 0 :(得分:1)

我不知道这是可能的。

但是你可以通过迭代不同的代理对象来获得类似的行为:

for (auto &&e: collection.method1())
// ...
for (auto &&e: collection.method2())

method1method2返回的代理对象实现beginend函数,它们返回不同类型的迭代器,它们以不同的方式实现operator*