到引用的转换不明确
Ambiguous conversion to reference
为什么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&)
{
}
相关文章:
- Visual C++(VS2017)中用户定义的转换不明确
- 是否删除导致不明确过载的转换
- 为什么这个涉及重载运算符和隐式转换的C++表达式是不明确的
- 模板转换运算符的分辨率不明确
- C++ 函数重载不明确,没有自动类型转换
- 继承会导致不明确的转换
- 使用自定义转换运算符的不明确性
- 为什么转换运算符在存在 const-ref 和值时会导致不明确的重载
- 解决隐藏歧义的不明确用户定义转换
- 转换重载函数是不明确的
- 为什么这个函数重载与参数类型转换不明确
- Clang错误:static_cast的转换不明确
- 转换在Visual Studio 2015中是不明确的,但与clang无关
- 通过不明确的转换运算符进行引用绑定
- Clang和GCC中不明确基类转换之间的行为差异
- 到引用的转换不明确
- 在重载解析中,选择使用不明确转换序列的函数是否必然会导致调用格式不正确
- 使用显式用户定义的强制转换运算符调用函数是不明确的
- 类型转换/提升不明确
- 转换不明确-C++