Я экспериментирую с метапрограммированием и вариативными шаблонами, и у меня возникают проблемы с каким-то запутанным поведением. Я разделил его на минимальный рабочий пример, но по сути я хочу отслеживать, сколько рекурсивных вызовов я делаю. Я хочу сделать это, сделав первый параметр шаблона целым числом, в то время как второй параметр шаблона является вариационным списком. В простейшем виде это выглядит следующим образом:Вариадические шаблоны с константами
template<typename... List>
struct initial_call{
static const int val = next_call<0, List...>::val;
};
template<int D, typename... List>
struct next_call {
static const int val = D;
};
Так игнорируя тот факт, что этот код не имеет смысла, он не компилируется на VS2013, утверждая, что «неожиданный тип«List», на линии внутри определения initial_call. Без целого впереди, он отлично работает. Итак, есть ли способ комбинировать вариативные шаблоны с целыми параметрами шаблона?
К сожалению @cdhowie, я отредактированный. – rkevingibson
'next_call' должен быть до' initial_call' –
После размещения 'next_call' перед' initial_call' он [работает для меня] (http://ideone.com/PV41Hc). – cdhowie