Я знаю, как выбрать первый параметр вариационного шаблона:
template< class...Args> struct select_first;
template< class A, class ...Args> struct select_first<A,Args...>{ using type = A;};
Это очень просто. Однако select_last не похож:
template< class ...Args> struct select_last;
template< class A> struct select_last<A> { using type = A; };
template< class A, class Args...> struct select_last<A,Args...>{
using type = typename select_last<Args...>::type;
};
Это решение потребовало глубоких рекурсивных шаблонов. Я пытаюсь решить это с помощью:
template< class A, class Args...>
struct select_last< Args ... , A>{ using type = A; }; // but it not compiled.
Q: существует более эффективный способ выбора последнего параметра вариативных шаблонов?