Habt ihr schonmal undefiniertes Verhalten erlebt als ihr illegal in den namespace std eingedrungen seid?



  • Da gibt es doch undefiniertes Verhalten wenn man in den namespace std eindringt. (nur unter bestimmten Situationen nicht)
    Habt ihr das schonmal gemacht? Was ist da mit eurem Rechner passiert? Wurde die Festplatte formatiert?



  • Undefiniertes Verhalten bedeutet nicht, dass die Platte formatiert wird, sondern das das Verhalten nicht vorgeschreiben ist. Vieleicht passiert auch gar nichts.



  • siehe Sig...



  • Die Frage mit der Festplatten-Formatierung war ja auch eher scherzhaft gemeint.

    Aber ich verstehe einfach nicht den Grund warum der Standard sagt das dann undefiniertes Verhalten entsteht. 🙄

    Vielleicht das man irgendwelche globalen Variablen ändern könnte?



  • Ach so, das hättest du auch sagen können.

    Der, der die Bibliothek implementiert will doch möglicherweise sich Hilfsfunktionen bauen. Die haben auch einen Namen und befinden sich dann auch in std. Wenn du jetzt in diesen Namensraum eindringst und dort zufällig eine Funktion mit dem selben Namen definierst, wie eine dieser Hilfsfunktionen gibts Probleme. Vielleicht kommt es zu Fehlermeldugnen, vielleicht passiert aber auch was ganz fieses, wie dass du eine zusätzliche Überladung hinzufügst, die dann in bestimmten Situationen verwendet wird und in anderen nicht und so plötzlich ganz seltsames Verhalten auftaucht.



  • ach, man darf nix im std:: anlegen? hab ich wohl überlesen, weil ich eh nie auf diese idee käme.
    aber so ein verbot ist nett für die compilerbauer. die können dann unter umständen besser zaubern.
    wir wissen ja, daß sachen wie std::swap magisch sind und sich zur not auch mal in den assemblerbefehl xchg auflösen. selbsterfundenen gerüchten nach (das sind eh die besten) kann man std::sort nicht selber schlagen, ohne auch std::swap zu verwenden.



  • volkard schrieb:

    wir wissen ja, daß sachen wie std::swap magisch sind und sich zur not auch mal in den assemblerbefehl xchg auflösen.

    [OT] Was aber keine gute Idee wäre, weil xchg ein Bus Lock macht und daher wesentlich langsamer ist als drei moves.


Anmelden zum Antworten