为什么shared_ptr签名与数组的unique_ptr不同?

shi*_*mar 6 c++ memory shared-ptr unique-ptr c++11

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.
Run Code Online (Sandbox Code Playgroud)

与unique_ptr相比,对于数组,shared_ptr签名是否有任何特殊原因?

如果两个api都遵循类似的签名,那会更简单.

Gea*_*phy 6

unique_ptr有一个显式的模板专门化来处理数组对象.LWG(C++委员会图书馆工作组)简要地考虑了它的可能性,shared_ptr<T[]>显然它没有足够高的优先级使其成为标准,对于算法的后果也存在一些争议.shared_ptr<T[]>