Ответ 1
Его в 1.4 документах: http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/make_shared.html
Он, похоже, был добавлен в версию 1.39
Является ли boost::make_shared
устаревшим? Не нашли свое определение в 1.35.
Его в 1.4 документах: http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/make_shared.html
Он, похоже, был добавлен в версию 1.39
std:: make_shared также доступен в С++ 11. Обратите внимание, что make_shared - это больше, чем функция удобства. В следующем примере:
make_shared<foobar>(1, 2);
shared_ptr<foobar>(new foobar(1, 2));
Оба оператора создают объект foobar и создают shared_ptr. Однако первый избегает выделения памяти для общего счетчика, поскольку для счетчика и объекта foobar будет использоваться один кусок памяти. Это невозможно в последнем утверждении, поскольку память для foobar выделяется до создания shared_ptr.
Что я хочу сказать: Нет, make_shared не устарел, потому что он обеспечивает очень полезную оптимизацию.
Прошло немного исследований сегодня, и кажется, что make_shared фактически был добавлен к 1.36.0 (в 1.35.0 нет такого заголовка), но интересно то, что нет ни одного упоминания в What new about this изменить - по крайней мере, я не смог найти его