标准提供了
使用
这只是一个疏忽吗?(就像有一个
std::unique_ptr
的模板特化,它在析构函数中正确调用delete[]
。void func()
{
std::unique_ptr< int[] > arr(new int[10]);
.......
}
使用
std::shared_ptr
时,这种特殊化是不可用的,因此需要提供一个正确调用delete[]
的删除器:void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; } );
..............
}
这只是一个疏忽吗?(就像有一个
std::copy_if
一样),还是有其他原因?
shared_ptr
机制应该被禁用,例如引用子对象的能力。 - Ben Voigt