Also es liegt tatsächlich an den #includes. Hab da einiges hinzugefügt <algorithm> und <cstring> etc...
Jetzt ist aber meine Frage: Wenn das Programm ohne diese includes unter einem compiler läuft und unter dem nächsten nicht - was wäre eine saubere Möglichkeit das Programm auf beiden zum problemlosen kompilieren zu bringen? Sollte man jetzt die fehlenden includes drin lassen? Beschwert sich der andere compiler dann nicht irgendwie dass ein include 2-mal drin ist? So nach dem Motto "algorithm already included" ? Ich kann doch programmtechnisch nicht wissen welche includes schon eingebunden sind und welche nicht.
Ist also der Weg: Möglichst die wichtigsten (alle) includes von Haus aus mitzuliefern im Programm?
Die Header sind in der Regel von include guards umgeben, das heißt, sie werden effektiv eh nur einmal eingebunden. Lass die zusätzlichen includes drin, so schreibt es der Standard eh vor. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra