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

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

我很确定这是不可能的,但只是为了确定 - 是否有可能根据基于范围的 for 中使用的类型在集合的迭代器上调用不同的一元运算符*“重载”(?)。我特别感兴趣的是调用两个不同的重载:

for (auto &e: collection)

for (auto e: collection)

但是对于给定类型的e,这个问题可以更一般化。

最佳答案

我不知道这是可能的。

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

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

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

关于c++ - 是否可以根据基于范围的 for 类型调用不同的取消引用运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120506/

相关文章:

c++ - 物体围绕其侧面旋转

c++ - C++中执行时间显示 : cin/scanf/getchar_unlocked()

C++ - 构造函数被用于同一个类两次

c++ - 如何在 Vi 和 Emacs 中使用相同缩进样式的 C++ 代码?

c++11 - 使用 std::make_shared 分配 std::weak_ptr

c++ - 引用类型的 std::optional 特化

c++ - 在参数包中查找类型

C++ 运算符 [] 重载没有响应

c++ - 澄清智能指针的 operator* 和 operator-> 重载

c++ - 使用纯虚方法在父类(super class)中重载运算符 <