fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<class... Ts> struct mpl_tuple {};
  5.  
  6. template<class T, int N, class TUPLE> struct tuple_maker;
  7. template<class T, class... Ts> struct tuple_maker<T,0,mpl_tuple<Ts...>> {
  8. using type = mpl_tuple<Ts...>;
  9. };
  10. template<class T, int N, class... Ts> struct tuple_maker<T,N,mpl_tuple<Ts...>>
  11. : tuple_maker<T,N-1,mpl_tuple<T,Ts...>> {};
  12.  
  13. template<class T, int N> using make_tuple = typename tuple_maker<T,N,mpl_tuple<>>::type;
  14.  
  15. template<class TUPLE> struct VectorBase;
  16. template<class... Ts> struct VectorBase<mpl_tuple<Ts...>> {
  17. void set(Ts... ts) {
  18. cout << __PRETTY_FUNCTION__ << endl;
  19. }
  20. };
  21.  
  22. template<class T, int N> struct Vector : VectorBase<make_tuple<T,N>> {};
  23.  
  24. int main() {
  25. Vector<int,5> v5;
  26. v5.set(1,2,3,4,5);
  27. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
void VectorBase<mpl_tuple<Ts ...> >::set(Ts ...) [with Ts = {int, int, int, int, int}]