Acerca de las clases de C ++ con referencia propia

Estoy un poco confundido ...

¿Por qué se permite esto en C ++:

static int t = 0;

class A
{
    public:
        A() : m(t++)
        {

            cout << "C:" << m << endl; 
            if(t >= 5)
            {
                A a;                      // <<<< ----- THIS line
                throw( a);
            }
        }            

        int m;
};

Pero esto no:

static int t = 0;

class A
{
    public:

        A() : m(t++)
        {

            cout << "C:" << m << endl; 
        }

        A a;                            // <<<< ----- THIS line

        int m;
};

El segundo no se está compilando como se esperaba (sí, sé por qué no se está compilando: en ese punto del código, elA aún está incompleto) ...

Pero ... el primero se compila muy bien (y hace lo que se supone que debe hacer, es decir: bloquea la aplicación en una declaración como:A a[10]; ) Es elA ¿Un tipo completo en el constructor? ¿También puede señalarme algunas entradas estándar de C ++ para esta situación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta