繁体   English   中英

为什么会有所谓的身份转换?

[英]Why is there a so-called identity conversion?

如果身份转换不做任何事情(只要我在标准中遇到过,它只是在说不需要进行转换),为什么会这样呢? 它的真正目的是什么?

用法示例

根据标准(n3690 13.3.3.1.1):

如第4章所述,标准转换序列本身就是身份转换(即无转换),或者由其他四个类别中的一到三个转换组成。

13.3.3.1:

如果不需要将参数与参数类型匹配的转换,则隐式转换序列是由标识转换组成的标准转换序列

cppreference

否则,如果参数类型是可以通过聚合初始化从初始化程序列表初始化的聚合,则隐式转换序列是用户定义的转换序列,第二标准转换序列是标识转换。

struct A { int m1; double m2;};
void f(A);
f({'a','b'});  // calls f(A(int,double)), user-defined conversion

“使用第二个标准转换序列进行身份转换”-值得一提吗?

身份转换的目的是充当基本案例,并允许我们对转换进行推理,而不必指出不需要转换的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM