回答編集履歴
1
std::unique_ptr<T>とstd::unique_ptr<T\[\]>の違い
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[]`を使わなければ動くようですが、ポインタが破棄されるときに問題が起きるかも知れません。
|