¿Por qué se pueden modificar los miembros const en un constructor?

Tengo curiosidad por qué los miembros const se pueden modificar en el constructor.

¿Existe alguna regla estándar en la inicialización que anule la "constancia" de un miembro?

struct Bar {
    const int b = 5; // default member initialization
    Bar(int c):b(c) {}
};

Bar *b = new Bar(2); // Problem: Bar::b is modified to 2
                     // was expecting it to be an error

¿Algunas ideas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta