|
|
坏坏的海龟 · Delphi 中的字符串_delphi ...· 2 年前 · |
|
|
直爽的墨镜 · R学习 第一篇:变量和向量 - 悦光阴 - 博客园· 2 年前 · |
|
|
求醉的莴苣 · sqlalchemy 视图 - ...· 2 年前 · |
|
|
非常酷的匕首 · 一句话开启HTTP服务 - 知乎· 2 年前 · |
|
|
慈祥的紫菜汤 · Upgrade of InfoSphere ...· 3 年前 · |
如何为成员函数正确调用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
扫码关注腾讯云开发者
领取腾讯云代金券