構築時に静的初期化子リストをコンテナラッパークラスに「渡す」ことは可能ですか?それは次にそのメンバーを初期化しますか?
struct bar {
bar(void * ptr): ptr(ptr) {}
void * ptr;
};
template<class T, int N>
struct foo
{
foo( args ) :store(args) {} // here the arg list should be passed
T store[N];
};
int main()
{
bar b[2]={NULL,NULL};
foo<bar,2> f(NULL,NULL); // This should be possible
}
残念ながら、STLやBoostは使用できません。
これの有用性に疑問がある場合は、説明させてください。まず、これは非常に「調理された」セットアップです。セットアップ全体を説明することは、ここに投稿するのに十分ではなく、役に立ちません。ネストされた式テンプレートツリーがある場合を想像してみてください。コンパイル時にそれをトラバースし、関連するオブジェクトを収集して、上記のようなコンテナラッパーに格納します。ご不明な点がございましたらお問い合わせください。
編集済み:Tのデフォルトコンストラクターは呼び出さないでください。