C++ 重载中的平凡转换 让我们考虑以下课堂: struct T { T() {} T(T&) {cout << "1";} T(const T&) {cout << "2";} };

C++ 重载中的平凡转换 让我们考虑以下课堂: struct T { T() {} T(T&) {cout << "1";} T(const T&) {cout << "2";} };,c++,overloading,C++,Overloading,两个重载的复制因子只需要简单的转换,所以为什么没有歧义?也许这个表对您有点帮助: 从类型转换 转换为类型 类型名 类型名& 类型名& 类型名 类型名称[] 类型名* 类型名称参数列表 *类型名称参数列表 类型名 常量类型名 类型名 易失性类型名 类型名* 常量类型名* 类型名* 易失性类型名* 因为您没有将变量创建为常量变量,但编译器可以从非常量转换为常量,不知何故等于重载字符*和字符串,然后您可以使用fasd。编译器可以使用这两种工具,就像我在第13.3.3.2/3节[over.ics.ran

两个重载的复制因子只需要简单的转换,所以为什么没有歧义?

也许这个表对您有点帮助:

从类型转换 转换为类型 类型名 类型名& 类型名& 类型名 类型名称[] 类型名* 类型名称参数列表 *类型名称参数列表 类型名 常量类型名 类型名 易失性类型名 类型名* 常量类型名* 类型名* 易失性类型名*
因为您没有将变量创建为常量变量,但编译器可以从非常量转换为常量,不知何故等于重载字符*和字符串,然后您可以使用fasd。编译器可以使用这两种工具,就像我在第13.3.3.2/3节[over.ics.rank]的标准中找到的答案一样:如果S1和S2仅在限定转换方面不同,并且分别产生类似类型T1和T2,则标准转换序列S1比标准转换序列S2更好,T1类型的cv资格签名是T2I类型的cv资格签名的适当子集。我已尝试将其编辑成表格。如果我遗漏了任何内容,请进行任何更正该链接是不相关的,也不能理解此表的开头和结尾。@TanveerBadar我也不能。。。但是不管怎样,。这个链接包含函数重载的信息,我们有关于琐碎转换的信息。@AbhishekDimri我建议您在答案中添加尽可能多的细节。请解释此表和链接如何在此场景中提供帮助。
T a;
T b = a;