x / y的确切名称查找规则是什么?
What are the exact name lookup rules for x op y?
遇到
x op y
ADL找到x.op(y)成员吗?还是将查找指定为if不是x.p (y),而是ADL(op, x, y)?
考虑成员候选、非成员候选(带ADL)和内置候选。最好的候选人被选中了。
[over.match.oper]/3
对于操作数为不限定版本
T1
的一元型operator @
和左操作数为不限定版本T1
、右操作数为不限定版本T2
的二元型operator @
,指定候选成员、非成员和内置候选函数三组候选函数的构造方法如下:
如果
T1
是一个完整的类类型,则候选成员集合是T1::operator@
(13.3.1.1.1)的限定查找的结果;非成员候选者集合是根据非限定函数调用(3.4.2)中名称查找的通常规则在表达式上下文中对
operator@
进行非限定查找的结果,只是所有成员函数都被忽略。但是,如果没有操作数具有类类型,则只有查找集中第一个形参类型为T1
或"引用(可能限定)T1
"(当T1
是枚举类型时),或者(如果有右操作数)第二个形参类型为T2
或"引用(可能限定)T2
"(当T2
是枚举类型时)的非成员函数才是候选函数。对于
operator ,
、一元operator &
或operator ->
,内置候选项设置为空。对于所有其他操作符,内置候选操作符包括13.6中定义的所有候选操作符函数,与给定操作符相比,
- 具有相同的操作符名称,并且
- 接受相同数目的操作数,并且
- 接受可以根据13.3.3.1将给定的操作数转换为的操作数类型,
- 没有与任何非模板非成员候选相同的参数类型列表。
[over.match.oper]/6
重载解析的候选函数集是成员候选函数、非成员候选函数和内置候选函数的并集。实参列表包含操作符的所有操作数。根据13.3.2和13.3.3从候选函数集中选择最佳函数。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 此代码是否违反一个定义规则
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 假设声明中某些上下文中需要的名称查找规则是什么
- 在类内定义的友元函数与类外定义的友元函数的查找规则之间的差异
- 哪里定义了查找名称最直接声明的名称查找规则
- 如何让叮当揉捏两相查找的规则
- 哪个查找规则阻止编译器查找函数
- 模板功能中的名称查找规则
- 在C++11中查找运算符的规则
- 成员名查找规则
- 嵌套名称说明符的名称查找规则
- 什么名称查找规则适用于静态 const 数据成员定义中的名称
- 查找规则多边形的顶点
- x / y的确切名称查找规则是什么?