Inicializador de expresión constante para miembro de clase estática de tipo double

En C ++ 11 y C ++ 14, ¿por qué necesitoconstexpr en el siguiente fragmento:

class Foo {
    static constexpr double X = 0.75;
};

mientras que este produce un error de compilación:

class Foo {
    static const double X = 0.75;
};

y (más sorprendentemente) esto se compila sin errores?

class Foo {
    static const double X;
};

const double Foo::X = 0.75;

Respuestas a la pregunta(2)

Su respuesta a la pregunta