N3920 Extending shared_ptr to Support Arrays, Revision 2
C++14後のLibrary Fundamentals TSでは、std::shared_ptr
の配列サポートが予定されています。
std::unique_ptr
のように、配列での部分特殊化を用意するのではなく、内部的にstd::is_array
型特性を使ってdelete
かdelete[ ]
か、operator[ ]
を定義するかどうかなどを分岐するようです。
std::shared_ptr<int[]> p(new int[3]); p[0] = 3; p[1] = 1; p[2] = 4;
std::shared_ptr
に指定できる型の形式は、従来のstd::shared_ptr<T>
に加えて、std::shared_ptr<T[]>
とstd::shared_ptr<T[N]>
が許可される予定です。
Boostでは1.53.0から、配列をサポートしています。
なお、shared_ptr
オブジェクトを作るヘルパ関数make_shared()
の配列サポートも検討されていますが、
N3939 Extending make_shared to Support Arrays, Revision 2
これは現状、Technical Specificationには予定されていません。