From 0b33fff6b7fe9186b08907a0aba419889e1c31fe Mon Sep 17 00:00:00 2001 From: Felix Thaler Date: Mon, 23 Feb 2026 09:56:43 +0100 Subject: [PATCH] Fixes for newer Clang versions --- include/gridtools/common/hymap.hpp | 15 +++++++-------- .../frontend/cartesian/expressions/expr_pow.hpp | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/include/gridtools/common/hymap.hpp b/include/gridtools/common/hymap.hpp index 6c93c6f46..8265d84b7 100644 --- a/include/gridtools/common/hymap.hpp +++ b/include/gridtools/common/hymap.hpp @@ -198,7 +198,7 @@ namespace gridtools { template struct values; -#if !defined(__NVCC__) && defined(__clang__) && __clang_major__ <= 17 +#if !defined(__NVCC__) && defined(__clang__) template values(Vs const &...) -> values; #endif @@ -213,16 +213,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 +236,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); } };