Является ли следующая программа С++ 11 плохо сформированной?
struct a
{
struct b { };
void f() {};
};
extern struct a b;
struct a ::b;
int main()
{
b.f();
}
Почему/почему нет?
Интересной здесь является эта строка:
struct a ::b;
Является ли это прямым объявлением внутреннего класса a::b
?
Или это определение глобальной переменной b
? Эквивалентно:
struct a (::b);