cmath inkludiert math.h
-
Hallo!
Warum inkludiert cmath eigentlich direkt math.h? Somit landen Funktionen wie log() ja erst wieder im globalen namespace, das nervt...
Weiß das jemand?
Danke!
-
Weil die Compilerbauer zu faul sind, beide Header getrennt zu schreiben. Du bist allerdings nicht der einzige, den das stoert.
-
Weil sie es darf (zumindest seit C++11).
Der wahre Grund wird wohl sein, weil es relativ viel vorhandenen Code kaputt machen würde, würde man diese historisch gewachsene Tatsache ändern. So etwas ist manchmal wichtiger als strikte Standardkonformität, auch wenn es ein paar wenigen Leuten Probleme macht. Immerhin sehen diese Leute sofort, dass sie sich hier nicht auf den Standard verlassen können und können noch reagieren.
Die neue Formulierung in C++11 dient wohl auch eher der Anpassung an die Realität, als einer Änderung des Ideals.