fork download
  1. #include <utility>
  2. #include <iostream>
  3.  
  4.  
  5. struct H {
  6. template<std::size_t ... Idxs, class ... Ts>
  7. static decltype(auto) get_desired (
  8. std::index_sequence<Idxs ...>,
  9. Ts && ... ts
  10. ) {
  11. struct Ignore { Ignore (...) {} };
  12.  
  13. return
  14. ([] (decltype(Idxs, Ignore{}) ..., auto && t, auto ...)
  15. -> decltype(auto) {
  16. return std::forward<decltype(t)> (t);
  17. }) (std::forward<Ts> (ts) ...);
  18. }
  19. };
  20.  
  21. template<std::size_t N, class ... Ts>
  22. decltype(auto) get_nth_param (Ts && ... ts) {
  23. return H::get_desired (
  24. std::make_index_sequence<N> {},
  25. std::forward<Ts> (ts) ...
  26. );
  27. }
  28.  
  29. int main() {
  30. // your code goes here
  31. std::cout << get_nth_param<3> (10, 20, 30, "Testme") << std::endl;
  32. return 0;
  33. }
Success #stdin #stdout 0s 4576KB
stdin
Standard input is empty
stdout
Testme