回答編集履歴
1
std::unique_ptr<T>とstd::unique_ptr<T\[\]>の違い
    
        answer	
    CHANGED
    
    | @@ -38,4 +38,15 @@ | |
| 38 38 |  | 
| 39 39 | 
             
            とりあえず、strlenやstrcpyなどは動いているのでたぶん何でもいけるでしょう。`char[]`だと扱いにくそうなので`std::string`を返す例も作ってみました。`std::make_unique`はC++14からなので古いコンパイルにはご注意ください。
         | 
| 40 40 |  | 
| 41 | 
            -
            あと、returnの所に`std::move`がなくてもムーブになると思っているんですが、必要でしたっけ?
         | 
| 41 | 
            +
            あと、returnの所に`std::move`がなくてもムーブになると思っているんですが、必要でしたっけ?
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            ---
         | 
| 44 | 
            +
            【追記】
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            [unique_ptr - cpprefjp C++日本語リファレンス](http://cpprefjp.github.io/reference/memory/unique_ptr.html)によると
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            > `new[]`演算子で作成された配列へのポインタにも対応している。
         | 
| 49 | 
            +
            > * `T[]`時に`delete[]`を呼び出すように`default_delete`を特殊化している。`auto_ptr`では配列を渡すことができなかった(正確にはデストラクタで`delete[]`ではなく`delete`が呼び出されるため上手く動作しない)。
         | 
| 50 | 
            +
            > * `unique_ptr`自体も`T[]`時には部分特殊化され、`operator[]`によるアクセスを提供している。
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            だそうです。`std::unique_ptr<wchar_t>`のままでも`operator[]`を使わなければ動くようですが、ポインタが破棄されるときに問題が起きるかも知れません。
         | 
