将所有权从unique_ptr <t,void(*)(t *)>转移到unique_ptr <const t,void(*)(const =“”t *)=“”>

时间:2017-02-13 21:39:02

标签: c++ c++11 unique-ptr

reinterpret_cast类似于:

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() ) } ; 
}

这里使用object调用caste deleter函数,实际上是非const 但有没有更清洁的方法来做这种转移,同时避免UB?

1 个答案:

答案 0 :(得分:2)

不使用> show_funcs("test_funcs2.lua") Group[1]: local d = a + b local e = b - c return d *e Group[2]: if (person.age == 18) then print("Adult") else print("Kid") end if (person.money > 20000) then print("Rich") else print("poor") end Group[3]: return x + y; Group[4]: return x - y; Group[5]: return x * y; Group[6]: return x / y; 作为删除类型,不。但我们可以制作自己的删除者:

void (*)(const T *)

这可以推广到任何删除器类型。