重複の可能性:
移動専用型のベクトルをリスト初期化できますか?
このコードをコンパイルするには、gcc 4.6.1 を使用します。
int main()
{
std::vector<std::unique_ptr<int>> vec({
std::unique_ptr<int>(new int(0)),
std::unique_ptr<int>(new int(1)),
});
return 0;
}
g ++が不平を言うには、次のようなものがあります
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/../../../../include/c++/4.6.1/bits/stl_construct.h:76:7: **error: use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&)** [with _Tp = int, _Dp = std::default_delete<int>, std::unique_ptr<_Tp, _Dp> = std::unique_ptr<int>]'
この場合、g++ はまだコピー コンストラクターを試行しているようですが、イニシャライザー リストに入力したのは右辺値です。では、コピー不可のコンテナをイニシャライザ リストで初期化するにはどうすればよいでしょうか。