是否有原因unique_ptr::reset
没有采用const deleter&
和deleter&&
的重载来匹配将其作为第二个参数的构造函数?
在unique_ptr
中存储的删除程序将通过reset
中的参数进行复制分配或移动分配。如果删除器不可复制或不可移动,则调用reset
的相应重载将无法编译。这似乎与构造函数的行为一致。
最佳答案
我考虑过添加它,但是您可以通过移动分配运算符获得等效的功能:
ptr = unique_ptr<T, D>(new T(another_value), D(another_state));
因此,为了使API保持较小,我选择不与
reset
说同样的话。更新
我生活和学习...
语法实际上比我上面显示的要简单得多:
ptr = {new T(another_value), D(another_state)};
关于c++ - 为什么unique_ptr::reset没有带有删除器的重载?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9167205/