草庐IT

c++ - 下面的初始化是如何良构的?

[class.conv.ctor]/2中的示例包含以下初始化:Za3=Z(1);//OK:directinitializationsyntaxused这如何被视为直接初始化语法? 最佳答案 Z(1)将直接初始化纯右值。prvalue然后将用于初始化对象。通过rulesofguaranteedelision,没有临时后跟拷贝。纯右值直接初始化对象。因此,Za3=Z(1);完全等同于Za3(1);。在C++17之前的版本中,这将执行纯右值临时变量的直接初始化,然后将临时变量(几乎肯定会被删除)复制到对象a3中。无论拷贝是否被省略,纯右值