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