Можно ли использовать 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}. Если в * 1012 была constexpr tail
функция, думаю, она должна работать.