Die Sprache verwendet Bibliothekseinrichtungen nur sehr selten automatisch.
In einigen Fällen hängt die Kernsprache von der Standardbibliothek ab, ja. Z.B. Sie müssen den Header <typeinfo>
einschließen, um den Operator typeid
zu verwenden. Und da ist der Aufruf von std::terminate
für eine nicht behandelte Ausnahme. Abgesehen von so speziellen und grundlegenden Fällen sind die Kernsprache und die Standardbibliothek jedoch voneinander getrennt. Mit Kenntnis der notwendigen Compiler- und OS-spezifischen Funktionen können Sie die Standardbibliothek selbst implementieren.
Also, kurz gesagt, gibt es keine Garantie Magie Ersatz Ihrer new
-Ausdrucks mit einem Aufruf an make_shared
, aber wenn der Compiler kann garantieren, dass der sichtbare Effekt wird die gleiche sein, es dann kann optimieren auf diese Weise unter die als-wenn Regel.
Soweit ich weiß, gibt es keine Compiler noch, dass das tut, als 2016. August
Sie ihm gesagt 'neue xyz zu nennen()', 'nicht make_shared' zu nennen - es ist ziemlich seltsam wäre, wenn dein Compiler etwas anderes nennt als du gesagt hast, nicht wahr? – Anedar