diff --git a/include/RAJA/util/View.hpp b/include/RAJA/util/View.hpp index 2d5623c562..6e16361616 100644 --- a/include/RAJA/util/View.hpp +++ b/include/RAJA/util/View.hpp @@ -316,6 +316,11 @@ struct Reshape } }; +template +constexpr std::array make_reverse_array(std::index_sequence) { + return std::array{sizeof...(Is) - 1U - Is ...}; +} + template<> struct Reshape { @@ -326,11 +331,9 @@ struct Reshape std::array extent{s...}; - ///Should be a away to do this at compile time... - std::array reverse_indices_array; - for(int i = N-1, j=0; i>-1; --i, j++) {reverse_indices_array[j] = i; } + constexpr auto reverse_array = make_reverse_array(std::make_index_sequence{}); - auto reverse_layout = RAJA::make_permuted_layout(extent, reverse_indices_array); + auto reverse_layout = RAJA::make_permuted_layout(extent, reverse_array); return RAJA::View>(ptr, reverse_layout); }