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

时间:2013-10-06 09:39:06

标签: c++ memory c++11 shared-ptr unique-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.

与unique_ptr相比,是否有任何特定原因shared_ptr签名与数组不同?

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

1 个答案:

答案 0 :(得分:6)

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

的算术