¿Hay alguna razón por la que unique_ptr::reset
no tenga sobrecargas que tengan un const deleter&
y deleter&&
para hacer coincidir sus constructores que toman esos como un segundo argumento?¿Por qué unique_ptr :: reset tiene sobrecargas que toman un eliminador?
El eliminador almacenado en unique_ptr
se copiaría o se movería asignado con el argumento desde reset
. Si el eliminador no se puede copiar o no se puede mover, no se compilará la sobrecarga correspondiente del reset
. Parece que sería un comportamiento constante con los constructores.
+1 por tener la única respuesta autoritativa a una pregunta por qué. – ildjarn
¿No sería más limpio y más consistente con shared_ptr si hubiera una función de reinicio? Para mí, se siente especialmente más limpio cuando tienes una función de eliminación personalizada. Por ejemplo: 'ptr = unique_ptr (new_raw_ptr, deleter_function);' versus 'ptr.reset (new_raw_ptr, deleter_function);'. O incluso mejor si pudiéramos mantener la misma función deleter, por lo que sería como: 'ptr.reset (new_raw_ptr);'. –
felipou
@felipou: este último funciona.Para el primero, así es como * usted * puede hacerlo: http://cplusplus.github.io/LWG/lwg-active.html#submit_issue –