C++11 を使用して、コンストラクターを使用して、以下のinitializer_list
ような再帰的に定義されたクラスをアセンブルすることは可能ですか?Foo
constexpr
template <size_t N>
struct Foo {
constexpr Foo(int x, Foo<N-1> f) : x(x), xs(xs) {}
int x;
Foo<N-1> xs;
};
template <> struct Foo<0> {};
Foo<3>
次を使用して初期化できます。
int main(int argc, char *argv[])
{
Foo<3> a = Foo<3>(1,Foo<2>(2,Foo<1>(3,Foo<0>())));
return 0;
}
代わりに Foo<3> a = {1,2,3} を使用するとよいでしょう。constexpr tail
機能があれば、initializer_list
うまくいくはずです。