|
|
英姿勃勃的香槟 · 数据库引擎错误_目标数据库正参与某个可用性组 ...· 2 年前 · |
|
|
踢足球的火龙果 · 机器学习常用性能度量中的Accuracy、P ...· 2 年前 · |
|
|
有腹肌的黄花菜 · 现代Web播放器 - 知乎· 2 年前 · |
|
|
活泼的打火机 · 非全屏Activity实现,以及触摸消息的处 ...· 2 年前 · |
如何为成员函数正确调用invoke_result?或者专门用于运算符成员函数。我尝试了
std::invoke_result<T::operator[], size_type>
,但没有成功。在这种情况下,正确的语法是什么?
如下所示呢?
std::invoke_result<decltype(&T::operator[]), T, size_type>
但是这种语法应该适用于单个
operator[]
,而不是模板。
在模板或重载的情况下,您应该避免
std::invoke_result
,并遵循T.C建议的
decltype()
方式。
或者,您可以将调用包装在一个lambda函数中,并对lambda应用
std::invoke_result
(如果您真的真的想使用
std::invoke_result
)。
关于
std::invoke_result
语法,考虑到指向成员函数的指针与指向常规函数的指针是完全不同的。无论如何,你可以粗略地把它看作是一个指向常规函数的指针,该函数接收与调用其方法的对象相对应的附加参数(在第一个位置)。
因此,在您的示例中,第一个
T
参数表示调用其运算符的
T
类型的对象。
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券
|
|
有腹肌的黄花菜 · 现代Web播放器 - 知乎 2 年前 |