Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.54 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <utility>
  3. #include <iostream>
  4.  
  5. template <size_t I>
  6. size_t foo() { return I; }
  7.  
  8. template <class T, size_t... I>
  9. T switch_(size_t i, std::index_sequence<I...>)
  10. {
  11.   T ret;
  12.   const bool ar[] = {
  13.     ((i == I) ? (ret = foo<I>()):false, false)... };
  14.   return ret;
  15. }
  16.  
  17. template <class T, size_t Max>
  18. T do_switch(size_t i)
  19. {
  20.   return switch_<T>(i, std::make_index_sequence<Max>());
  21. }
  22.  
  23. int main(int argc, char** argv)
  24. {
  25.   size_t ret = do_switch<size_t, 10>(argc);
  26.   std::cout << ret << std::endl;
  27.   return 0;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement