Warum kann eine unbenannte Struktur nicht als abschließender Rückgabetyp verwendet werden?

8
%Vor%

Mein Compiler ist VC ++ 2013 RC.

Warum ist g falsch, während f OK ist?

Ist das ein Fehler von VC ++?

    
xmllmx 04.10.2013, 10:23
quelle

1 Antwort

11

Tatsächlich ist es in C ++ illegal, einen Typ in einem Parameter oder Rückgabetyp zu definieren, mit oder ohne Namen. Siehe C ++ 11 [diff.decl]:

  

Änderung: In C ++ dürfen Typen nicht in Rückgabe- oder Parametertypen definiert werden. In C sind diese Typdefinitionen erlaubt

Das eigentliche Problem ist also, dass der erste Fall akzeptiert wird, nicht der zweite, der abgelehnt wird.

    
Angew 04.10.2013, 10:29
quelle