О классах C ++ с самостоятельной ссылкой

Я немного смущен ...

Почему это разрешено в 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;
};

Но это не так:

static int t = 0;

class A
{
    public:

        A() : m(t++)
        {

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

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

        int m;
};

Второй компилируется не так, как ожидалось (да, я знаю, почему он не компилируется: на этом этапе кодаA все еще не завершен) ...

Но ... первый компилируется хорошо (и делает то, что должен делать, то есть: вылетает приложение с помощью оператора вроде:A a[10]; ). ЭтоA полный тип в конструкторе? Также можете указать мне некоторые стандартные записи C ++ для этой ситуации?

Ответы на вопрос(2)

Ваш ответ на вопрос