error C2582: la función 'operator =' no está disponible en 'B'

El siguiente código da un error de compilación (al menos cuando se usa MS VS 2008) para la línea "e = f" en main ():

error C2582: la función 'operator =' no está disponible en 'B'

class A {
public:
    A() { }
    static const double x;
};
const double A::x = 0.0;

class B {
public:
    B() : x(0.0) { }
    const double x;
};

int main( int argc, char *argv[] )
{
    A c,d;
    B e,f;

    c = d;
    e = f;

    return 0;
}

El operador de asignación predeterminado debe generarse para ambas clases, A y B!?

en 12.8.10: "Si la definición de clase no declara explícitamente un operador de asignación de copia, uno se declara implícitamente".

Respuestas a la pregunta(3)

Su respuesta a la pregunta