以下はC++03のinsertの原理である。 template < typename T > class container { private : alignas(T) char storage[ sizeof(T) ] ; T * ptr = nullptr ; public : void insert( const T & x ) { ptr = ::new(storage) T( x ) ; } } ; insertとは、何らかの方法で確保されたストレージ上に、オブジェクトを構築するのだ。placement newを使えば、任意の生のストレージ上に、オブジェクトを構築することができる。 push_backのようなメンバーは、insertのやや特殊なものである。 C++11では、ムーブセマンティクスを取り入れたため、insertにはrvalueリファレンスをとるものが追加された。 v