Неправильное разрешение имени, когда родительский и внутренний класс имеют одно и то же имя

У меня странный случай с Visual Studio 2003. По вполне законным причинам у меня следующая иерархия:

class A {};

class B : public A {
public:
    class A {};
};

class C : public B::A {};

То есть у меня есть внутренний класс с тем же именем, что и родитель внешнего класса. Когда Cпытается наследоваться от B::A, Visual Studio думает, что я указываю на родительский класс A, а не на вложенный класс внутри B. GCC, похоже, разрешает версию внутреннего класса, как я и ожидал

Это ошибка Visual Studio 2003 или я что-то не так делаю? Есть ли обходной путь (, кроме обновления Visual Studio )?

10
задан Michael Mrozek 17 August 2012 в 17:02
поделиться