fork download
  1. #include <iostream>
  2. #include <tuple>
  3. #include <utility>
  4.  
  5. template <unsigned int N>
  6. struct printer
  7. {
  8. template <typename ...Args, typename T>
  9. static void print(std::tuple<Args...> & t, T && x)
  10. {
  11. std::get<sizeof...(Args) - N>(t) << x;
  12. printer<N - 1>::print(t, std::forward<T>(x));
  13. }
  14. };
  15.  
  16. template <>
  17. struct printer<0>
  18. {
  19. template <typename ...Args, typename T>
  20. static void print(std::tuple<Args...> &, T &&) {}
  21. };
  22.  
  23. template <typename ...Args, typename T>
  24. void operator<<(std::tuple<Args...> && t, T && x)
  25. {
  26. printer<sizeof...(Args)>::print(t, std::forward<T>(x));
  27. }
  28.  
  29. int main()
  30. {
  31. std::tie(std::cout, std::cout) << "Foo\n";
  32. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Foo
Foo