mar*_*ark 64 c++ shared-ptr c++11
该标准提供了一个模板特化std::unique_ptr
,正确调用delete[]
其析构函数:
void func()
{
std::unique_ptr< int[] > arr(new int[10]);
.......
}
Run Code Online (Sandbox Code Playgroud)
由于std::shared_ptr
这种专业化不可用,因此有必要提供一个正确调用的删除器delete[]
:
void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; } );
..............
}
Run Code Online (Sandbox Code Playgroud)
这只是一个疏忽吗?(以同样的方式存在std::copy_if
)或是否有原因?
How*_*ant 70
LWG(C++委员会图书馆工作组)简要地考虑了这种可能性,但这个想法并非没有争议.虽然争议主要是关于shared_ptr<T[]>
可能被抛弃的提案中添加的一个特征(算术shared_ptr<T[]>
).
但最终真正的真正原因是,尽管已经讨论过,但在LWG面前从未有过实际的书面提案.它从来没有充分鼓励任何人的优先级列表(包括我自己的),以便花时间编写提案.
最近在一些LWG成员中就这一主题重新开始了非正式的对话,我亲自对其进行了原型设计.但仍然没有书面提案.我认为它将是工具箱中一个不错的附加工具.是否真的会发生是否是任何人的猜测.
更新
shared_ptr
现在的阵列支持有草案TS:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4077.html
更新(2017年)
现在,C++ 17支持这一点.见案例3shared_ptr::shared_ptr()
归档时间: |
|
查看次数: |
9851 次 |
最近记录: |