C ++: inicialización del campo heredado

Tengo una pregunta sobre la inicialización de miembros heredados en el constructor de la clase derivada. Código de ejemplo:

class A
    {
public:
    int m_int;
    };

class B: public A
    {
public:
    B():m_int(0){}
    };

Este código me da el siguiente resultado:

In constructor 'B::B()': Line 10: error: class 'B' does not have any field named 'm_int'

(verhttp://codepad.org/tn1weFFP)

¿Adivino por qué sucede esto?m_int debe ser miembro deBy clase de padresA ya debe inicializarse cuando se inicializam_int enB sucede (porque los constructores principales se ejecutan antes de la inicialización del miembro de la clase heredada). ¿Dónde hay un error en mi razonamiento? ¿Qué sucede realmente en este código?

EDIT: Conozco otras posibilidades para inicializar este miembro (constructor base o asignación en un constructor derivado), pero quiero entender por qué es ilegal en la forma en que lo intento. ¿Alguna característica específica del lenguaje C ++ o algo así? Indíqueme un párrafo en el estándar C ++ si es posible.

Respuestas a la pregunta(4)

Su respuesta a la pregunta