Открихме нещо подобно на следното (не питайте...):
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:
глобалната квалификация на името на класа е невалидна преди токена '{'
От C++03, Приложение A ми се струва, че GCC е прав:
class-head
може да се състои отnested-name-specifier
иidentifier
nested-name-specifier
не може да започне с глобална квалификация (::
)- очевидно нито може
identifier
... или пропускам нещо?