Heredar constructores e inicializadores de llaves o iguales

No entiendo por qué no puede compilar una clase que tiene un miembro (no construible por defecto) con un inicializador de paréntesis o igual y un constructor heredado. g ++ dice:

test.cpp: 22: 15: error: uso de la función eliminada "Derivado :: Derivado (flotante)"
Derivado d (1.2f);

test.cpp: 16: 13: nota: "Derivado :: Derivado (flotante)" se elimina implícitamente
porque la definición predeterminada estaría mal formada:
usando Base :: Base;

test.cpp: 16: 13: error: no hay función coincidente para la llamada a "NoDefCTor :: NoDefCTor ()"
test.cpp: 5: 1: nota: candidato:
NoDefCTor :: NoDefCTor (int) NoDefCTor (int) {}

Código que no se compila (en g ++ 5.1):

struct NoDefCTor
{
    NoDefCTor(int) {}
};

struct Base
{
    Base(float) {}
};

struct Derived : Base
{
    using Base::Base;
    NoDefCTor n2{ 4 };
};

int main()
{
    Derived d(1.2f);
}

Código que compila, peronunca usa NoDefCTorEl constructor predeterminado (¡a pesar de que aparentemente lo necesita!):

struct NoDefCTor
{
    NoDefCTor(int) {}
    NoDefCTor() = default;
};

struct Base
{
    Base(float) {}
};

struct Derived : Base
{
    using Base::Base;
    NoDefCTor n2{ 4 };
};

int main()
{
    Derived d(1.2f);
}

Realmente no me gusta la idea de tener un constructor predeterminado cuando no lo necesito. En una nota al margen, ambas versiones compilan (y se comportan) muy bien en MSVC14.

Respuestas a la pregunta(1)

Su respuesta a la pregunta