fork(2) download
  1. #include <initializer_list>
  2. #include <vector>
  3.  
  4. #if 1 // Not in C++11 // make_index_sequence
  5. #include <cstdint>
  6.  
  7. template <std::size_t...> struct index_sequence {};
  8.  
  9. template <std::size_t N, std::size_t... Is>
  10. struct make_index_sequence : make_index_sequence<N - 1, N - 1, Is...> {};
  11.  
  12. template <std::size_t... Is>
  13. struct make_index_sequence<0u, Is...> : index_sequence<Is...> {};
  14.  
  15. #endif // make_index_sequence
  16.  
  17. namespace detail
  18. {
  19. template <std::size_t... Is, typename T>
  20. std::initializer_list<T> make_initializer_list(const T& t, index_sequence<Is...>)
  21. {
  22. return { (static_cast<void>(Is), t)... };
  23. }
  24. }
  25.  
  26. template <std::size_t N, typename T>
  27. std::initializer_list<T> make_initializer_list(const T& t)
  28. {
  29. return detail::make_initializer_list(t, make_index_sequence<N>());
  30. }
  31.  
  32. int main()
  33. {
  34. std::initializer_list<int> a = make_initializer_list<3>(42);
  35. std::vector<int> v = make_initializer_list<3>(42);
  36.  
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0s 3424KB
stdin
Standard input is empty
stdout
Standard output is empty