Argumento predeterminado frente a sobrecargas en C ++
Por ejemplo, en lugar de
void shared_ptr::reset() noexcept;
template <typename Y>
void shared_ptr::reset(Y* ptr);
uno puede pensar en
template <typename Y = T>
void shared_ptr::reset(Y* ptr = nullptr);
Creo que la diferencia de rendimiento es insignificante aquí, y la segunda versión es más concisa. ¿Hay alguna razón específica por la cual el estándar C ++ sea el primero?
losla misma pregunta se le ha pedido el idioma de Kotlin, y allí se prefiere el argumento predeterminado.
Actualizar:
std::unique_ptr::reset()
sigue el diseño de argumento predeterminado (veraquí) Entonces creo que la razónstd::shared_ptr::reset()
usa sobrecargas porque tienen diferentes especificaciones de excepción.