読者です 読者をやめる 読者になる 読者になる

空の初期化子リストはデフォルトコンストラクタを呼ぶ

C++

initializer_listを受け取るコンストラクタとデフォルトコンストラクタがあった場合、
{ }による初期化は、デフォルトコンストラクタを呼びます(8.5.4 p3参照)。

#include <iostream>
#include <initializer_list>

struct X {
    X(std::initializer_list<int> init)
    {
        std::cout << "init" << std::endl;
    }

    X()
    {
        std::cout << "default constructor" << std::endl;
    }
};

int main()
{
    X a = {1, 2, 3};
    X b = {};
}
init
default constructor