Доступ к вложенным членам класса на C ++ 11

В C ++ 11 я пытаюсь получить доступ к переменной-члену включающего класса из вложенного класса следующим образом:

struct Enclosing {
    int a;
    struct Nested {
        int f() {
            return a;
        }
    };
};

Даже это не компилируется с использованием g ++ 4.7.2 с -std = c ++ 11, создавая сообщения об ошибках этой формы:

error: invalid use of non-static data member 'Enclosing::a'

Насколько я понимаю, C ++ 11 рассматривает вложенный класс как член класса, так что предположительно вложенный класс может получить доступ к любому другому члену включающего класса. Я сделал что-то неправильно? Заранее спасибо.

Обновить:

Хотя на мой вопрос, похоже, есть ответ ниже, я не уверен, что он будет помечен как дубликат.

Мне известны дискуссии о взаимосвязи между вложенными классами и вложенными классами до появления стандарта C ++ 11, после долгих поисков, прежде чем отправлять вопрос.

Предыдущие соответствующие обсуждения, подобные этому, приводят некоторые «обновления» в C ++ 11, например,Доступность вложенных классов C ++

Но было не очень ясно, по крайней мере из ответов, которые я прочитал, в полной мере, что C ++ 11 "отличается" от более старых версий по этому вопросу.

Технически решение моего вопроса существует в более старых темах, таких какВложенный класс 'доступ к закрытому классу' члены личных данныхЭто факт, на который я должен был указать. Но я не пришел ни с каким таким ответом, который помещает C ++ 11 в контекст; по крайней мере, я не думаю, что мой вопрос можно считать «дубликатом» вопроса, заданного до стандарта C ++ 11.

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

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