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

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