fork download
  1. #include <array>
  2. #include <utility>
  3.  
  4.  
  5. template<typename T, size_t N, size_t... I>
  6. constexpr std::array<T, N+1> append_helper(const std::array<T, N>& arr, const T& elem, std::index_sequence<I...>)
  7. {
  8. return std::array<T, N+1>{ arr[I]..., elem };
  9. }
  10.  
  11. template<typename T, size_t N>
  12. constexpr std::array<T, N+1> append(const std::array<T, N>& arr, const T& elem)
  13. {
  14. return append_helper(arr, elem, std::make_index_sequence<N>{});
  15. }
  16.  
  17.  
  18. int main()
  19. {
  20. constexpr std::array<int, 3> a1{3, 2, 1};
  21. constexpr auto a2 = append(a1, 0);
  22. constexpr int i = a2[3];
  23.  
  24. return i;
  25. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
Standard output is empty