Примеры в стандарте

мер, вместо

void shared_ptr::reset() noexcept;
template <typename Y>
void shared_ptr::reset(Y* ptr);

можно подумать

template <typename Y = T>
void shared_ptr::reset(Y* ptr = nullptr);

Я думаю, что разница в производительности здесь незначительна, а вторая версия более краткая. Есть ли какая-то конкретная причина, по которой стандарт C ++ идет первым путем?

тот же вопрос был задан вопрос о языке Kotlin, и предпочтение отдается аргументу по умолчанию.

Обновить:

std::unique_ptr::reset() следует стандартному дизайну аргументов (см.Вот). Так что я думаю причинаstd::shared_ptr::reset() использует перегрузки, потому что они имеют разные спецификации исключений.

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

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