fork download
  1. #include <array>
  2. #include <iostream>
  3. #include <string>
  4.  
  5. namespace detail
  6. {
  7. template<typename T>
  8. std::string
  9. to_string(T&& arg)
  10. {
  11. return std::string(std::forward<T>(arg));
  12. }
  13. }
  14.  
  15. template<typename... Args>
  16. std::array<std::string, sizeof...(Args)>
  17. ToStringArray(Args... args)
  18. {
  19. using detail::to_string;
  20. using std::to_string;
  21. std::array<std::string, sizeof...(Args)> unpack = {to_string(args)...};
  22. return unpack;
  23. }
  24.  
  25. int main()
  26. {
  27. auto Print = [](const auto &array)
  28. {
  29. std::cout << "Print array with size " << array.size() << std::endl;
  30. for (auto &arg : array)
  31. {
  32. if (arg.empty())
  33. {
  34. std::cout << "empty string" << std::endl;
  35. continue;
  36. }
  37. std::cout << arg << std::endl;
  38. }
  39. };
  40.  
  41. Print(ToStringArray(1u, "2", 0.3));;
  42. Print(ToStringArray(std::string("")));
  43. Print(ToStringArray());
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
Print array with size 3
1
2
0.300000
Print array with size 1
empty string
Print array with size 0