@ sbi: Я думаю, что нет: может быть неправильно, но .. в C ++ это не анонимная структура, есть специальное правило, называемое "взлом структуры", которое делает обычную структуру, помеченную именем typedef, поэтому typedef name также становится именем класса. Это необходимо, потому что функции с внешней связью требуют, чтобы аргументы типа класса тоже имели внешнюю связь, а это подразумевает наличие внешнего имени. Без этого взлома только внешние функции "C" могут манипулировать структурой.
Единственное место, где вы могли бы использовать анонимную структуру, было бы внутри другой структуры:
struct X { struct {int a; } b; } x;
x.b.a; // OK
struct X имеет внешнюю связь, хотя тип b является анонимным. Анонимные структуры могут использоваться в стеке или в статическом хранилище, но, в отличие от анонимных объединений, это не даст преимущества перед отдельными переменными. Я даже не уверен, что C ++ допускает анонимные структуры.