是否有原因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/

10-13 04:58