到引用的转换不明确



为什么CL实例到const int&的转换在这里不明确?

struct CL
{
    operator const int&()
    {
    }
    operator int&()
    {
    }
};
void fnc(const int&)
{
}
int main()
{
    CL cl;
    fnc(cl);
}

有两种方式:
1) 。cl.operator const int&()导致用户定义的转换
2) 。cl.operator int&()导致用户定义转换,然后进行资格转换(int&const int&

第一条路比第二条路好,不是吗?我看了《标准》,但什么也没找到。

这是因为这两种转换在此上下文中都适用(同样好)。也就是说,int&const int&都可以被const int&结合。

转换不会是模棱两可的,如果你有:

void fnc(int&)
{
}

最新更新