Placement Construction

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2345.pdf
これ (placement insert の提案の元) 読んでも,配列ベースのコンテナ (std::vector/std::deque) については,placement insert と,右辺値で push_back/insert 呼ぶ場合との差異がやっぱり分からにゃーい.
一方で,ノードベースのコンテナに関してはこれかなりうれしいぞなもし? Copyable でも Moveable でもないオブジェクトですらコンテナに載せられるんじゃん.
(Copyable であることの要求はさることながら) Moveable であることの要求もある種のクラスに対しては比較的厳しい要求で,特に move した後のオブジェクトの有効性について (実装とドキュメントの両方で) ちゃんとしておく必要があるし, move した後のオブジェクトというのは普通の利用においてはユーザに暴露したくない状態だったりする場合も多いはず.この結果, Copyable でも Moveable でもないクラスは普通に出てくる.一方でそういうクラスのオブジェクトをコンテナに載せたいという要求も当然出てくる.
自分は今まで, move の利点は「効率 (と,ややその副産物的に例外安全)」+「(ユーザ定義のものを含めた) Copyable でないクラスと,コンテナ他の汎用コンポーネントとの協調」だと (そして後者の利点は上記の問題でやや霞むと) 思っていた.けれども,標準ライブラリに placement construction のサポートが真剣に導入されるなら,それによって Moveable ですらないものに対しても,汎用コンポーネントとの協調動作がサポートされるのだから,そちらの方が明らかに良いよにゃー,という考えに切り替わっちった.