@@ -307,13 +307,13 @@ template<std::size_t... stride_order_idx>
307
307
struct PermutedViewHelper <std::index_sequence<stride_order_idx...>>
308
308
{
309
309
template <typename IndexType, typename T, typename ... Extents>
310
- static auto get (T* ptr, Extents... extents)
310
+ static auto get (T* ptr, Extents&& ... extents)
311
311
{
312
312
constexpr int N = sizeof ...(Extents);
313
- std::array<RAJA::idx_t , N> extent_arr {extents...};
314
313
315
314
auto custom_layout = RAJA::make_permuted_layout (
316
- extent_arr, std::array<RAJA::idx_t , N> {stride_order_idx...});
315
+ std::array<RAJA::idx_t , N> {std::forward<Extents>(extents)...},
316
+ std::array<RAJA::idx_t , N> {stride_order_idx...});
317
317
318
318
constexpr auto unit_stride = detail::get_last_index (stride_order_idx...);
319
319
using view_t = RAJA::View<T, RAJA::Layout<N, IndexType, unit_stride>>;
@@ -326,12 +326,12 @@ template<>
326
326
struct PermutedViewHelper <layout_right>
327
327
{
328
328
template <typename IndexType, typename T, typename ... Extents>
329
- static auto get (T* ptr, Extents... extends )
329
+ static auto get (T* ptr, Extents&& ... extents )
330
330
{
331
331
constexpr int N = sizeof ...(Extents);
332
332
using view_t = RAJA::View<T, RAJA::Layout<N, IndexType, N - 1 >>;
333
333
334
- return view_t (ptr, extends ...);
334
+ return view_t (ptr, std::forward<Extents>(extents) ...);
335
335
}
336
336
};
337
337
@@ -347,17 +347,14 @@ template<>
347
347
struct PermutedViewHelper <layout_left>
348
348
{
349
349
template <typename IndexType, typename T, typename ... Extents>
350
- static auto get (T* ptr, Extents... extends )
350
+ static auto get (T* ptr, Extents&& ... extents )
351
351
{
352
352
constexpr int N = sizeof ...(Extents);
353
353
354
- std::array<RAJA::idx_t , N> extent_arr {extends...};
355
-
356
- constexpr auto reverse_array =
357
- detail::make_reverse_array (std::make_index_sequence<N> {});
358
-
359
- auto reverse_layout = RAJA::make_permuted_layout (extent_arr, reverse_array);
360
- using view_t = RAJA::View<T, RAJA::Layout<N, IndexType, 0U >>;
354
+ auto reverse_layout = RAJA::make_permuted_layout (
355
+ std::array<RAJA::idx_t , N> {std::forward<Extents>(extents)...},
356
+ make_reverse_array (std::make_index_sequence<N> {}));
357
+ using view_t = RAJA::View<T, RAJA::Layout<N, IndexType, 0U >>;
361
358
362
359
return view_t (ptr, reverse_layout);
363
360
}
0 commit comments