This answer dice:¿Qué es la declaración directa en C++?
... Por último,
typedef struct { ... } Foo;
declara una estructura anónima y crea un typedef para ello. Por lo tanto, con este constructo, no tiene un nombre en el espacio de nombre de etiqueta, solo un nombre en el espacio de nombres typedef. Esto significa que tampoco puede ser declarado adelante. Si desea hacer una declaración directa, debe darle un nombre en el espacio de nombre de la etiqueta.
¿Qué es forward declaration?
No se puede reenviar declarar una * anonymous * struct. – John
@FredN Realmente no estoy seguro de a lo que apunta. (Esto no es ayudado por el enlace __ "esta respuesta" __ enlazando con __ la pregunta__, por lo que no sabemos a qué respuesta se refería). En C++, puede reenviar-declarar una clase, pero no un nombre de tipodef. Una "declaración avanzada" de una clase es una declaración de clase. – sbi
@sbi: Aunque tiene razón en que el OP era impreciso (y nuevo en el sitio, por lo que no sabía cómo vincularlo correctamente a una respuesta específica), solo hay dos respuestas sobre esa pregunta que dicen que no puede reenviar declarar un typedef, y alguien que mire cualquiera de esas respuestas (he incluido la cita más completa de una respuesta anterior) tendrá el contexto necesario para responder realmente a esto. –