在[basic.lookup.classref] / 7(C ++ 14)中我们有(重点是我的):
如果 id-expression 是 conversion-function-id , 首先在对象表达式的类中查找 conversion-type-id ,并使用名称(如果找到)。 否则它会被抬起来 在整个 postfix-expression 的上下文中。在每一个 查找,只有表示其类型或模板的名称 专业是类型被考虑。
我不明白上面否则的必要性。因此,我想看一个示例,其中在整个后缀表达式的上下文中查找 conversion-type-id 。
答案 0 :(得分:5)
某事like this:
struct C {
operator int() { return 42; }
};
typedef int X;
int main() {
C c;
c.operator X(); // calls c.operator int();
}
显然,在X
类中找不到名称C
,但可以在使用它的表达式的上下文中找到它。