是否可以使用 C++11initializer_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
我认为它应该可以工作。