C++ 为什么阵列的共享\u ptr签名与唯一\u ptr不同? std::unique_ptr p(新整数[10])//好啊 std::shared_ptr p(新整数[10])//错误 共享的(新的int[10],](int*p){delete[]p;}); //好的,为 //自共享\u ptr将调用以来的数组 //默认情况下删除。

C++ 为什么阵列的共享\u ptr签名与唯一\u ptr不同? std::unique_ptr p(新整数[10])//好啊 std::shared_ptr p(新整数[10])//错误 共享的(新的int[10],](int*p){delete[]p;}); //好的,为 //自共享\u ptr将调用以来的数组 //默认情况下删除。,c++,memory,c++11,shared-ptr,unique-ptr,C++,Memory,C++11,Shared Ptr,Unique Ptr,与唯一的\u ptr相比,阵列的共享\u ptr签名不同,有什么具体原因吗 如果两个api都遵循相似的签名,则会更简单。unique\u ptr具有处理数组对象的模板专门化。LWG(C++委员会的图书馆工作组)简要地考虑了 SyddyPtR 的可能性,但是它没有足够高的优先级使它成为标准,对于算法对shared\u ptr的影响也存在一些争议。另一个区别是unique\u ptr没有弱的\u ptr。unique\u ptr有一个模板专门化来允许数组,而shared\u ptr没有。dup?如果

与唯一的\u ptr相比,阵列的共享\u ptr签名不同,有什么具体原因吗


如果两个api都遵循相似的签名,则会更简单。

unique\u ptr
具有处理数组对象的模板专门化。LWG(C++委员会的图书馆工作组)简要地考虑了 SyddyPtR <代码>的可能性,但是它没有足够高的优先级使它成为标准,对于算法对
shared\u ptr

的影响也存在一些争议。另一个区别是
unique\u ptr
没有
弱的\u ptr
。unique\u ptr有一个模板专门化来允许数组,而shared\u ptr没有。dup?如果需要,可以使用
std::shared\u ptr
std::unique_ptr<int[]> p(new int[10]); //ok

std::shared_ptr<int[]> p(new int[10]); //Error

shared_ptr<int> sp( new int[10],[](int *p){delete [] p;});
                                       //Ok, writing custom deleter for
                                       //array since shared_ptr will call
                                       //delete by default.