Я думаю, что xskxzr отвечает на мой вопрос более прямо и четко на человеческом языке, в отличие от загадочного стандартного текста, поэтому я приму его ответ. Тем не менее, ваш ответ вместе с обсуждением в разделе комментариев очень полезен, что вполне заслуживает голосования :)

refдо C ++ 17 верно следующее:код такой как

 может вызвать утечку памяти, еслиf(std::shared_ptr<int>(new int(42)), g()) вызывается послеg и бросает исключение, в то время какnew int(42) является безопасным, поскольку два вызова функций никогда не перемежаются.f(std::make_shared<int>(42), g())Мне интересно, какие изменения, внесенные в C ++ 17, делают это более неприменимым.

Ответ на аналогичный вопрос здесь

Ответы на вопрос(0)

Ваш ответ на вопрос