如果身份转换没有做任何事情(每当我在标准中遇到它时,只是告诉它不需要转换),为什么它是一个东西?它的真正目的是什么?
其用法的实例
从标准(n3690 13.3.3.1.1):
如第4章所述,标准转换序列是 身份转换本身(即没有转换)或由 来自其他四个类别的一到三次转换。
13.3.3.1:
如果不需要转换来将参数与参数匹配 类型,隐式转换序列是标准转换 由身份转换组成的序列
否则,如果参数类型是可以的聚合 根据聚合从初始化列表初始化 初始化时,隐式转换序列是用户定义的 具有第二标准转换序列的转换序列a 身份转换。
struct A { int m1; double m2;};
void f(A);
f({'a','b'}); // calls f(A(int,double)), user-defined conversion
“使用第二个标准转换序列进行身份转换” - 是否值得一提?
答案 0 :(得分:2)
身份转换的目的是作为一个基本案例,并允许我们推断转换,而不必单独列出不需要转换的情况。