#include<iostream>

template<unsigned int index, unsigned int... remPack> struct getVal;

template<unsigned int index, unsigned int In, unsigned int... remPack> struct getVal<index, In,remPack...>
{
    static const unsigned int val = getVal<index-1, remPack...>::val;
};
template<unsigned int In, unsigned int...remPack> struct getVal<1,In,remPack...>
{
    static const unsigned int val = In;
};
 
template<unsigned int... T> struct MyClass
{
    static void print(){
    std::cout<<getVal<1, T...>::val<<std::endl;
    std::cout<<getVal<2, T...>::val<<std::endl;
    std::cout<<getVal<4, T...>::val<<std::endl;
    //...
    }
};
 
int main() {
MyClass<12,34,22,55>::print();
}