#pragma once #include template struct tuple {}; template struct tuple : tuple { tuple(T t, Ts... ts) : tuple(ts...), tail(t) {} T tail; }; //template //struct elem_type_holder/*<0, tuple>*/ { // typedef T type; //}; // //template //struct elem_type_holder> { // typedef typename elem_type_holder>::type type; //}; // //template //typename std::enable_if< // k == 0, typename elem_type_holder<0, tuple>::type&>::type // get(tuple& t) { // return t.tail; //} // //template //typename std::enable_if< // k != 0, typename elem_type_holder>::type&>::type // get(tuple& t) { // tuple& base = t; // return get(base); //}