Как называются частные деструкторы статических объектов? [Дубликат]

Possible Duplicate:
Cannot access private member in singleton class destructor

Я реализую синглтон, как показано ниже.

class A
{
public:

    static A& instance();
private:
    A(void)
    {
        cout << "In the constructor" << endl;
    }
    ~A(void)
    {
        cout << "In the destructor" << endl;
    }

};

A& A::instance()
{
    static A theMainInstance;
    return theMainInstance;
}

int main()
{
    A& a = A::instance();

    return 0;
 }

destructor is private, Будет ли это вызвано для объекта theMainInstance, когда программа собирается завершиться?

Я попробовал это в Visual Studio 6, это дало ошибку компиляции.

"cannot access private member declared in class..."

В Visual Studio 2010 это было скомпилировано иdestructor was called.

Каковы должны быть ожидания здесь в соответствии со стандартом?

Редактировать: путаница возникает, поскольку поведение Visual Studio 6 не так глупо. Можно утверждать, что конструктор A для статического объекта вызывается в контексте функции A. Ноdestructor is not called in the context of the same function, Это называется из глобального контекста.

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

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