diff --git a/include/gridtools/common/hymap.hpp b/include/gridtools/common/hymap.hpp index 6c93c6f46..f0a0d123f 100644 --- a/include/gridtools/common/hymap.hpp +++ b/include/gridtools/common/hymap.hpp @@ -198,10 +198,8 @@ namespace gridtools { template struct values; -#if !defined(__NVCC__) && defined(__clang__) && __clang_major__ <= 17 template values(Vs const &...) -> values; -#endif // NVCC 11 fails to do class template deduction in the case of nested templates template @@ -213,16 +211,18 @@ namespace gridtools { template template struct keys::values { +#if !defined(__clang__) || __clang_major__ < 18 static_assert(sizeof...(Vals) == sizeof...(Keys), "invalid hymap"); +#endif tuple m_vals; template ...>, int> = 0> + std::enable_if_t...>, + int> = 0> constexpr GT_FUNCTION values(Args &&...args) noexcept : m_vals{std::forward(args)...} {} - constexpr GT_FUNCTION values(Vals const &...args) noexcept : m_vals(args...) {} - constexpr GT_FUNCTION values(tuple &&args) noexcept : m_vals(std::move(args)) {} constexpr GT_FUNCTION values(tuple const &args) noexcept : m_vals(args) {} @@ -234,10 +234,7 @@ namespace gridtools { template constexpr GT_FUNCTION - std::enable_if_t<((!std::is_same_v> && is_hymap>::value) && - ... && - std::is_assignable_v>>>), + std::enable_if_t> && is_hymap>::value, values &> operator=(Src &&src) { (..., diff --git a/include/gridtools/stencil/frontend/cartesian/expressions/expr_pow.hpp b/include/gridtools/stencil/frontend/cartesian/expressions/expr_pow.hpp index 58365b188..0a5c9520c 100644 --- a/include/gridtools/stencil/frontend/cartesian/expressions/expr_pow.hpp +++ b/include/gridtools/stencil/frontend/cartesian/expressions/expr_pow.hpp @@ -21,7 +21,7 @@ namespace gridtools { struct pow_f { template GT_FUNCTION constexpr auto operator()(Arg const &arg) const { - return gt_pow::template apply(arg); + return gt_pow::apply(arg); } };