[英]Subscript operator for reference_wrapper
我最近了解到std::reference_wrapper<T>
对 function 调用运算符有重载,以防T
类似于函数。 我想知道标准委员会是否有理由在我们捕获类似std::vector
的情况下不包含数组下标运算符。 在我看来很奇怪,在这个标准 class 中只有一个只能作为 class 成员重载的典型运算符之一。
这背后的原因是什么?
通常,引用包装器不能支持底层类型的每个操作。 例如,无法自动支持成员函数。 下标运算符只是一个普通的操作,所以没有充分的理由支持它。 当然,我们可以得到一个调用底层 operator[ operator[]
的operator[]
,但是为什么不支持operator+
呢? operator==
? begin
和end
怎么样? :)
不过,重载 function 调用运算符有一个重要的后果:class 成为函子类型。 这在许多情况下都很有用。 例如:
std::for_each(first, last, std::ref(stateful_functor));
这是重载operator()
的一个很好的理由。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.