Не удается скопировать единую инициализацию, когда объект не имеет элементов данных

Обновляя некоторый код для использования унифицированной инициализации, я подумал, что это будет незаменимая современная замена на данный момент "Старый стиль" Стиль скобок. Я знаю это неЭто всегда так (очевидный пример,vector) но я'наткнулся на другое различие, которое я неТ понять.

class Object {
    public:
        Object() = default;
        Object(const Object&) = default;
};

int main() {
    Object o;
    Object copy{o}; // error
    Object copy2(o); // OK
}

не удается скомпилировать под clang3.5 с ошибкой: (также не работает под gcc)

error: excess elements in struct initializer

Есть два разных измененияObject которые делают эту работу. Либо добавление к нему члена данных, либо предоставление ему пустого тела конструктора копирования

class Object {
    private:
        int i; // this fixes it
    public:
        Object() = default;
        Object(const Object&) { } // and/or this fixes it as well
};

Я нене понимаю, почему это должно иметь значение.

Ответы на вопрос(2)

Ваш ответ на вопрос