Angenommen, ich bearbeite eine große C++-Quelldatei und füge ein paar Codezeilen hinzu, die zufällig auto_ptr
, wie im folgenden Beispiel.
#include <string>
// ... (much code here)
void do_stuff()
{
std::string str("hello world");
// ... (much code here too)
std::auto_ptr<int> dummy; // MY NEW CODE
// ...
}
Dieses Beispiel lässt sich mit gcc 3.4.4 (cygwin) kompilieren, da der Standard-Header <string>
enthält zufällig die Überschrift <memory>
erforderlich für die Erstellung von auto_ptr
. Allerdings funktioniert dies nicht auf gcc 4.5.0 (mingw); sie scheinen ihre Header-Dateien oder etwas aufgeräumt haben.
Wenn ich also Code hinzufüge, der auto_ptr
sollte ich sofort nachsehen, ob die Datei Folgendes enthält #include <memory>
am Anfang, als diese Antwort impliziert? Ich mache das nie (ich finde es zu lästig); ich verlasse mich immer darauf, dass der Compiler prüft, ob eine #include
fehlt.
Gibt es eine Option, die die Programmierung nicht beeinträchtigt und die Übertragbarkeit meines Codes gewährleistet?
Gibt es eine C++-Standardbibliothek-Implementierung, deren Header sich nicht mehr als nötig gegenseitig einschließen?