我很确定这是不可能的,但只是为了确定 - 是否有可能根据基于范围的 for 中使用的类型在集合的迭代器上调用不同的一元运算符*“重载”(?)。我特别感兴趣的是调用两个不同的重载:
for (auto &e: collection)
和
for (auto e: collection)
但是对于给定类型的e
,这个问题可以更一般化。
最佳答案
我不知道这是可能的。
但是您可以通过遍历不同的代理对象来获得类似的行为:
for (auto &&e: collection.method1())
// ...
for (auto &&e: collection.method2())
method1
和method2
返回的代理对象实现了返回不同类型迭代器的begin
和end
函数,它们以不同的方式实现 operator*
。
关于c++ - 是否可以根据基于范围的 for 类型调用不同的取消引用运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120506/