Является ли boost:: make_shared устаревшим сейчас?

Является ли boost::make_shared устаревшим? Не нашли свое определение в 1.35.

Ответы

Ответ 2

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 не устарел, потому что он обеспечивает очень полезную оптимизацию.

Ответ 3

Прошло немного исследований сегодня, и кажется, что make_shared фактически был добавлен к 1.36.0 (в 1.35.0 нет такого заголовка), но интересно то, что нет ни одного упоминания в What new about this изменить - по крайней мере, я не смог найти его