- 754 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2024/01/10(水) 12:45:18.04 ID:BOjhYgCx.net]
- >>753
この場合は initializer_list が問題。 initializer_list を経由するとムーブ可能/コピー不可な型を扱えない。 initializer_list を経由しない形にすればよいので要素を emplace_back で 入れる形にするなどの対処法が考えられる。 #include <memory> #include <vector> class Fuga { int placeholder; }; class Hoge { public: std::vector<std::unique_ptr<Fuga> > vec; template <class... Args> Hoge(Args&&... args) { (..., vec.emplace_back(std::forward<Args>(args))); } }; int main() { /*Fugaを何個か作成*/ auto p1 = std::make_unique<Fuga>(); auto p2 = std::make_unique<Fuga>(); auto p3 = std::make_unique<Fuga>(); /* 中略 色々処理 */ // std::move で右辺値にキャスト Hoge hoge(std::move(p1), std::move(p2), std::move(p3)); }
|

|