一种初始化器?

时间:2014-11-28 05:02:44

标签: c++ struct

在以下程序中,使用temporary:

直接初始化a
#include <iostream>

struct B{ };

struct A
{
    A(int, B){ std::cout << "A(int, B)" << std::endl; }
};

A a({4,B()});

int main(){ }

DEMO

但标准所说的是N3797::8.5/17 [dcl.init]

  

- 如果目标类型是(可能是cv限定的)类类型:

     

- 如果初始化是直接初始化,或者它是复制初始化,那么cv-   源类型的非限定版本与类的类相同,或类的派生类   目的地,建设者被考虑。

     

- 否则(即用于剩余的复制初始化案例),   用户定义的转换序列,可以从源转换   键入目标类型或(使用转换函数时)   按照13.3.1.4的描述列举其派生类别,   并且通过重载决策(13.3)选择最好的一个。

[...]

我不明白适用于该案例的规则是什么?为什么临时创建和初始化表达式{4,B()}的类型是什么?

0 个答案:

没有答案