Referenz auf sich selbst: MSVC 2010 mecker nicht



  • Guten Tag,

    ich würde mal gerne verstehen, warum der MSVC 2010 bei folgendem Code nicht abbricht. Er gibt nur ein lächerliches Warning aus, für ein Verhalten, was im Programmablauf zu einer Exception führt (sehr wahrscheinlich, in diesem Beispiel bei mir jetzt nicht).

    int &a = a;
    a = 20;
    cout << a << endl;
    

    Ergibt:

    warning C4700: Die nicht initialisierte lokale Variable "a" wurde verwendet
    

    Warum gibt das keinen Error?



  • theliquidwave schrieb:

    ich würde mal gerne verstehen, warum der MSVC 2010 bei folgendem Code nicht abbricht.

    Ich meine bei eriner der Usenet Gruppen gabs die Frage vor ner Weile schonmal. Es gab da tatsächlich eine mehr oder weniger sinnvolle Erklärung, warum der Compiler das nicht bemängelt - syntaktisch ist das IIRC in Ordnung, es gibt nur irgendwo eine recht versteckte Klausel im Standard die das als UB bezeichnet.



  • Ja, die Klausel habe ich auch irgendwo eben gesehen. Irgendwas mit 8.xx.xx, per Google gefunden. Finde es gerade nicht mehr.


Anmelden zum Antworten