回答編集履歴

1

std::unique_ptr<T>とstd::unique_ptr<T\[\]>の違い

2016/11/20 06:20

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -79,3 +79,25 @@
79
79
 
80
80
 
81
81
  あと、returnの所に`std::move`がなくてもムーブになると思っているんですが、必要でしたっけ?
82
+
83
+
84
+
85
+ ---
86
+
87
+ 【追記】
88
+
89
+
90
+
91
+ [unique_ptr - cpprefjp C++日本語リファレンス](http://cpprefjp.github.io/reference/memory/unique_ptr.html)によると
92
+
93
+
94
+
95
+ > `new[]`演算子で作成された配列へのポインタにも対応している。
96
+
97
+ > * `T[]`時に`delete[]`を呼び出すように`default_delete`を特殊化している。`auto_ptr`では配列を渡すことができなかった(正確にはデストラクタで`delete[]`ではなく`delete`が呼び出されるため上手く動作しない)。
98
+
99
+ > * `unique_ptr`自体も`T[]`時には部分特殊化され、`operator[]`によるアクセスを提供している。
100
+
101
+
102
+
103
+ だそうです。`std::unique_ptr<wchar_t>`のままでも`operator[]`を使わなければ動くようですが、ポインタが破棄されるときに問題が起きるかも知れません。