unique_ptr<char[]>
に移動するのに最適なイディオムは何unique_ptr<const char[]>
ですか?
ユースケース:バッファにC文字列を作成するとします。例外が発生した場合に適切なクリーンアップを確実にするために、そのバッファーは。を使用した参照である可能性がありますunique_ptr
。文字列が作成されたら、それをクラスメンバーに移動することをお勧めします。このクラスメンバーunique_ptr<const char[]>
は、文字列がさらに変更されないように宣言されています。
これが私がこれまでに持っている最高のものです:
std::unique_ptr<const char[]> res;
std::unique_ptr<char[]> buf(new char[4]);
buf[0] = 'f';
buf[1] = buf[2] = 'o';
buf[3] = '\0';
res = std::unique_ptr<const char[]>(const_cast<const char*>(buf.release()));
おそらく削除者の種類が異なるため、単に移動するだけではうまくいかないようです。`unique_ptr <T const[]>`が`T*`コンストラクタ引数を受け入れるべきかchar
で説明されているように、 toからの明示的なキャストを省略してもconst char
機能しません。
上で概説したことを達成するためのより良いイディオムはありますか?私のコードはかなり不器用に見え、最初は概念がいかに単純に聞こえるかを考えるとかなり長いです。