С reinterpret_cast
, что будет что-то вроде:Передача права собственности от unique_ptr <T, ничтожной (*) (T *)> для unique_ptr <константный T, аннулируются (*) (константный T *)>
std::unique_ptr< const T , void (*) (const T *) >
to_const (std::unique_ptr< T , void (*) (T *) > &ptr)
{
return { ptr.release() ,
reinterpret_cast< void (*) (const T *) >(ptr.get_deleter()) } ;
}
Здесь функция casted deleter вызывается с объектом, который на самом деле не const.
Но есть ли более чистый способ сделать такую передачу, избегая UB?
Можете ли вы более четко форматировать свой код? – WhiZTiM