Мы нашли что-то похожее на следующее (не спрашивайте...):
namespace N {
struct A { struct B; };
}
struct A { struct B; };
using namespace N;
struct ::A::B {}; // <- point of interest
Интересно, что это прекрасно компилируется с VS2005, icc 11.1 и Comeau (онлайн), но не работает с GCC:
глобальная квалификация имени класса недействительна перед токеном '{'
Из С++ 03, Приложение A, мне кажется, что GCC прав:
class-head
может состоять изnested-name-specifier
иidentifier
nested-name-specifier
нельзя начинать с глобальной квалификации (::
)- очевидно, ни один не может
identifier
... или я что-то не понимаю?