memory pool(2)
昨日の追記2で書いたテンプレートだとコンストラクタが呼べないことに気が付いた。
つーことでコンストラクタを追加。。
template< class T , class M = global_memory_pool > class Memory : public T , public M{ public: Memory(){} template< class V1 > Memory( V1 v1 ) : T( v1 ){} template< class V1 , class V2 > Memory( V1 v1 , V2 v2 ) : T( v1 , v2 ){} template< class V1 , class V2 , class V3 > Memory( V1 v1 , V2 v2 , V3 v3 ) : T( v1 , v2 , v3 ){} template< class V1 , class V2 , class V3 , class V4 > Memory( V1 v1 , V2 v2 , V3 v3 , V4 v4 ) : T( v1 , v2 , v3 , v4 ){} template< class V1 , class V2 , class V3 , class V4 , class V5 > Memory( V1 v1 , V2 v2 , V3 v3 , V4 v4 , V5 v5 ) : T( v1 , v2 , v3 , v4 , v5 ){} };
テンプレートの数が尋常じゃなくなる気がするけど、多分インライン展開されて直接上位クラスのコンストラクタが呼ばれて結局テンプレートが消えるので大丈夫でしょう。。
追記:
参照から const 参照にしました。
追記2:
参照を復活させました。
追記3:
やっぱりコピーだけにします(´・ω・`)