#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
версия):