gpt4 book ai didi

c++ - Reference_wrapper 的下标运算符

转载 作者:行者123 更新时间:2023-12-01 19:46:33 25 4
gpt4 key购买 nike

我最近了解到 std::reference_wrapper<T>T 情况下,函数调用运算符有重载是类似函数的。我想知道标准委员会是否有理由在我们捕获类似 std::vector 的情况下不包含数组下标运算符。 。我觉得很奇怪的是,这个标准类中只存在只能作为类成员重载的两个典型运算符之一。

这背后的理由是什么?

最佳答案

一般来说,引用包装器不能支持底层类型的每个操作。例如,没有办法自动支持成员函数。下标运算符只是一个普通的操作,因此没有充分的理由支持它。当然,我们可以得到一个operator[]来调用底层的operator[],但是为什么不支持operator+呢? 运算符==开始结束怎么样? :)

不过,重载函数调用运算符会产生一个重要的后果:类变成仿函数类型。这对于许多情况都很有用。例如:

std::for_each(first, last, std::ref(stateful_functor));

这是重载 operator() 的一个很好的理由。

关于c++ - Reference_wrapper 的下标运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58553305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com