以下是什么意思(特别是突出部分)?为什么表达式“f(a)”被视为“转换表达式”?
引用:“C++03 $3.4./3-”未限定名称的查找,用作函数调用的后缀表达式在3.4.2中进行描述。[注:为了确定(在解析期间)表达式是否为函数调用的后缀表达式,适用通常的名称查找规则。 3.4.2中的规则对表达式的语法解释没有影响。例如,
"
引用:“C++03 $3.4./3-”未限定名称的查找,用作函数调用的后缀表达式在3.4.2中进行描述。[注:为了确定(在解析期间)表达式是否为函数调用的后缀表达式,适用通常的名称查找规则。 3.4.2中的规则对表达式的语法解释没有影响。例如,
typedef int f;
struct A {
friend void f(A &);
operator int();
void g(A a) {
f(a);
}
};
"
f(a)表达式是等同于int(a)的强制类型转换表达式。由于该表达式不是函数调用,因此参数依赖的名称查找(3.4.2)不适用,也无法找到友元函数f。
有什么想法吗?
"