У меня есть следующая частичная специализация:аргумент шаблона с параметрами шаблона обхода
constexpr int NUM_ARGS = 3;
template <typename, typename, int> struct Dispatcher;
template <typename T, typename V>
struct Dispatcher<T, V, NUM_ARGS-1> {};
Но теперь мне нужно сам NUM_ARGS быть аргумент шаблона в Dispatcher. Но
template <typename, typename, int, int> struct Dispatcher;
template <typename T, typename V, int NUM_ARGS>
struct Dispatcher<T, V, NUM_ARGS, NUM_ARGS-1> { ...
является незаконным. Итак, каково обходное решение для этого?
И ответ на решение Pradhan, каким будет обходной путь для этой незаконной специализации?
template <int M, int N, typename... Args> struct Test;
template <int M, typename... Args>
struct Test<M, M-1, Args...> {};
где параметр шаблона по умолчанию даже не разрешен?
Пожалуйста, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve). –
Вы имеете в виду, что вам нужно увидеть больше контекста? Хорошо, я вставил его в свой вопрос. – prestokeys