#include <memory>
struct foo { };
int main() { std::make_shared<foo>(); }
Asssembly, сгенерированный как g++7, так и clang++5 с -fno-exceptions -Ofast для кода выше:
-
Содержит один вызов
operator new, если-fno-rttiпрошел не. -
Содержит два отдельных вызова до
operator new, если-fno-rttiпередано.
Это легко проверить на gcc.godbolt.org (clang++5 версия):
