@@ -263,10 +263,7 @@ namespace gridtools {
263
263
enum class ref_kind { rvalue, lvalue, const_lvalue };
264
264
265
265
template <class >
266
- struct get_ref_kind ;
267
-
268
- template <class T >
269
- struct get_ref_kind <T &&> : std::integral_constant<ref_kind, ref_kind::rvalue> {};
266
+ struct get_ref_kind : std::integral_constant<ref_kind, ref_kind::rvalue> {};
270
267
271
268
template <class T >
272
269
struct get_ref_kind <T &> : std::integral_constant<ref_kind, ref_kind::lvalue> {};
@@ -279,7 +276,9 @@ namespace gridtools {
279
276
struct add_ref ;
280
277
281
278
template <class T >
282
- struct add_ref <ref_kind::rvalue, T> : std::add_rvalue_reference<T> {};
279
+ struct add_ref <ref_kind::rvalue, T> {
280
+ using type = T;
281
+ };
283
282
284
283
template <class T >
285
284
struct add_ref <ref_kind::lvalue, T> : std::add_lvalue_reference<T> {};
@@ -432,7 +431,7 @@ namespace gridtools {
432
431
class Res = GT_META_CALL(from_types,
433
432
(Tup,
434
433
GT_META_CALL (get_results_t ,
435
- (GT_META_CALL(get_accessors, Tup && ), GT_META_CALL(get_accessors, Tups && )...))))>
434
+ (GT_META_CALL(get_accessors, Tup), GT_META_CALL(get_accessors, Tups)...))))>
436
435
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(Tup &&tup, Tups &&... tups) const {
437
436
using generators = GT_META_CALL (meta::transform,
438
437
(get_transform_generator, GT_META_CALL (meta::make_indices_c, size<decay_t <Tup>>::value)));
@@ -506,7 +505,7 @@ namespace gridtools {
506
505
507
506
template <class Tup ,
508
507
class Accessors = GT_META_CALL(
509
- meta::transform, (get_accessors, GT_META_CALL(get_accessors, Tup && ))),
508
+ meta::transform, (get_accessors, GT_META_CALL(get_accessors, Tup))),
510
509
class First = GT_META_CALL(meta::first, GT_META_CALL(to_types, Tup)),
511
510
class Res = GT_META_CALL(from_types, (First, GT_META_CALL(meta::flatten, Accessors)))>
512
511
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(Tup &&tup) const {
@@ -524,7 +523,7 @@ namespace gridtools {
524
523
GT_META_DEFINE_ALIAS (get_drop_front_generator, meta::id, get_nth_f<N + I::value>);
525
524
526
525
template <class Tup ,
527
- class Accessors = GT_META_CALL(get_accessors, Tup && ),
526
+ class Accessors = GT_META_CALL(get_accessors, Tup),
528
527
class Res = GT_META_CALL(from_types, (Tup, GT_META_CALL(meta::drop_front_c, (N, Accessors))))>
529
528
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(Tup &&tup) const {
530
529
using generators = GT_META_CALL (meta::transform,
@@ -548,7 +547,7 @@ namespace gridtools {
548
547
struct push_back_f {
549
548
template <class Tup ,
550
549
class ... Args,
551
- class Accessors = GT_META_CALL(get_accessors, Tup && ),
550
+ class Accessors = GT_META_CALL(get_accessors, Tup),
552
551
class Res = GT_META_CALL(
553
552
from_types, (Tup, GT_META_CALL(meta::push_back, (Accessors, Args &&...))))>
554
553
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(Tup &&tup, Args &&... args) const {
@@ -572,7 +571,7 @@ namespace gridtools {
572
571
struct push_front_f {
573
572
template <class Tup ,
574
573
class ... Args,
575
- class Accessors = GT_META_CALL(get_accessors, Tup && ),
574
+ class Accessors = GT_META_CALL(get_accessors, Tup),
576
575
class Res = GT_META_CALL(
577
576
from_types, (Tup, GT_META_CALL(meta::push_front, (Accessors, Args &&...))))>
578
577
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(Tup &&tup, Args &&... args) const {
@@ -626,7 +625,7 @@ namespace gridtools {
626
625
size_t N,
627
626
class State ,
628
627
class Tup ,
629
- class AllAccessors = GT_META_CALL(get_accessors, Tup && ),
628
+ class AllAccessors = GT_META_CALL(get_accessors, Tup),
630
629
class Accessors = GT_META_CALL(meta::drop_front_c, (I, AllAccessors)),
631
630
class Res = GT_META_CALL(meta::lfold, (meta_fun, State &&, Accessors)),
632
631
enable_if_t<(I + 4 < N), int> = 0>
@@ -643,14 +642,14 @@ namespace gridtools {
643
642
644
643
template <class State ,
645
644
class Tup ,
646
- class Accessors = GT_META_CALL(get_accessors, Tup && ),
645
+ class Accessors = GT_META_CALL(get_accessors, Tup),
647
646
class Res = GT_META_CALL(meta::lfold, (meta_fun, State &&, Accessors))>
648
647
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(State &&state, Tup &&tup) const {
649
648
return impl<0 , size<decay_t <Tup>>::value>(wstd::forward<State>(state), wstd::forward<Tup>(tup));
650
649
}
651
650
652
651
template <class Tup ,
653
- class AllAccessors = GT_META_CALL(get_accessors, Tup && ),
652
+ class AllAccessors = GT_META_CALL(get_accessors, Tup),
654
653
class StateAccessor = GT_META_CALL(meta::first, AllAccessors),
655
654
class Accessors = GT_META_CALL(meta::drop_front_c, (1 , AllAccessors)),
656
655
class Res = GT_META_CALL(meta::lfold, (meta_fun, StateAccessor, Accessors))>
@@ -747,7 +746,7 @@ namespace gridtools {
747
746
template <class Tup ,
748
747
class First = GT_META_CALL(meta::first, GT_META_CALL(to_types, Tup)),
749
748
class Accessors = GT_META_CALL(
750
- meta::transform, (get_accessors, GT_META_CALL(get_accessors, Tup && ))),
749
+ meta::transform, (get_accessors, GT_META_CALL(get_accessors, Tup))),
751
750
class Types = GT_META_CALL(meta::transpose, Accessors),
752
751
class InnerTuples = GT_META_CALL(
753
752
meta::transform, (get_inner_tuple_f<Tup>::template apply, Types)),
@@ -769,7 +768,7 @@ namespace gridtools {
769
768
};
770
769
771
770
template <class Tup ,
772
- class Accessors = GT_META_CALL(get_accessors, Tup && ),
771
+ class Accessors = GT_META_CALL(get_accessors, Tup),
773
772
class Res = GT_META_CALL(from_types, (Tup, GT_META_CALL(meta::reverse, Accessors)))>
774
773
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(Tup &&tup) const {
775
774
using n_t = size<decay_t <Tup>>;
@@ -809,7 +808,7 @@ namespace gridtools {
809
808
(I::value == N, insert_val_generator_f, insert_tup_generator_f<I::value - 1 >))));
810
809
811
810
template <class Tup ,
812
- class Accessors = GT_META_CALL(get_accessors, Tup && ),
811
+ class Accessors = GT_META_CALL(get_accessors, Tup),
813
812
class Types = GT_META_CALL(meta::insert_c, (N, Accessors, Val)),
814
813
class Res = GT_META_CALL(from_types, (Tup, Types))>
815
814
GT_TARGET GT_FORCE_INLINE GT_CONSTEXPR Res operator ()(Tup &&tup) const {
0 commit comments