fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <tuple>
  4. #include <boost/lexical_cast.hpp>
  5.  
  6. namespace detail
  7. {
  8.  
  9. template <typename ... Ts, std::size_t N, std::size_t...Is>
  10. std::tuple<Ts...>
  11. Convert(const std::array<std::string, N>& s,
  12. std::index_sequence<Is...>)
  13. {
  14. return std::tuple<Ts...>{boost::lexical_cast<Ts>(s[Is])...};
  15. }
  16.  
  17. }
  18.  
  19. template <typename ... Ts, std::size_t N>
  20. std::tuple<Ts...> Convert(const std::array<std::string, N>& s)
  21. {
  22. static_assert(N == sizeof...(Ts), "Unexpected size");
  23. return detail::Convert<Ts...>(s, std::index_sequence_for<Ts...>());
  24. }
  25.  
  26. int main() {
  27. std::array<std::string, 2u> ns = {"1", "4.2"};
  28. auto t = Convert<int, double>(ns);
  29.  
  30. std::cout << std::get<0>(t) << " " << std::get<1>(t) << std::endl;
  31. }
Success #stdin #stdout 0s 3280KB
stdin
Standard input is empty
stdout
1 4.2