Предположим, что у меня есть класс со следующей сигнатурой:
template <typename T, typename... Args>
class A;
Но как ведет себя этот класс, он должен зависеть от некоторого другого параметра, скажем, это значение T::value
:
template <typename T, typename... Args, typename Enable>
class A;
template <typename T, typename... Args, typename = typename std::enable_if<T::value>::type>
class A
{
// do something
};
template <typename T, typename... Args, typename = typename std::enable_if<!T::value>::type>
class A
{
// do something else
};
int main() { return 0; }
Однако эта программа дает следующую ошибку:
prog.cpp: 6: 11: ошибка: пакет параметров 'Арги должны быть в конце список параметров шаблона класс A;
Я изо всех сил пытался найти хороший источник информации об использовании enable_if
для выбора классов с вариационными шаблонами. Единственный вопрос, который я смог найти, это:
Как использовать std:: enable_if с вариационным шаблоном
Но, несмотря на название, этот вопрос и его ответы не очень помогают. Если кто-то может предоставить или связать руководство о том, как к этому нужно подходить, и почему это будет оценено.