La inicialización uniforme no se puede copiar cuando el objeto no tiene miembros de datos

Al actualizar algún código para usar una inicialización uniforme, pensé que sería un sustituto moderno para el estilo de paréntesis del "estilo antiguo" ahora. Sé que este no es siempre el caso (ejemplo obvio,vector<int>) pero he tropezado con otra diferencia que no entiendo.

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

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

no se compila en clang3.5 con el error: (también falla en gcc)

error: excess elements in struct initializer

Hay dos cambios diferentes paraObject que hacen que esto funcione. Agregándole un miembro de datos o dándole un cuerpo de constructor de copia vacío

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

No veo por qué esto debería hacer una diferencia.

Respuestas a la pregunta(2)

Su respuesta a la pregunta