読者です 読者をやめる 読者になる 読者になる

C++14 Fundamentals TS shared_ptrの配列サポート

C++

N3920 Extending shared_ptr to Support Arrays, Revision 2

C++14後のLibrary Fundamentals TSでは、std::shared_ptrの配列サポートが予定されています。

std::unique_ptrのように、配列での部分特殊化を用意するのではなく、内部的にstd::is_array特性を使ってdeletedelete[ ]か、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には予定されていません。

参照