Примеры в стандарте
мер, вместо
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()
использует перегрузки, потому что они имеют разные спецификации исключений.