From 46052334c316fcdbfc4ff58e7c6f67b26cf77195 Mon Sep 17 00:00:00 2001
From: Thibault Hallouin <thibault.hallouin@inrae.fr>
Date: Wed, 21 Dec 2022 15:01:53 +0100
Subject: [PATCH] enforce container ranks for evald and evalp

---
 include/evalhyd/evald.hpp | 5 ++++-
 include/evalhyd/evalp.hpp | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/include/evalhyd/evald.hpp b/include/evalhyd/evald.hpp
index ae72bea..e2f5ddd 100644
--- a/include/evalhyd/evald.hpp
+++ b/include/evalhyd/evald.hpp
@@ -3,6 +3,7 @@
 
 #include <unordered_map>
 #include <vector>
+#include <type_traits>
 
 #include <xtensor/xexpression.hpp>
 #include <xtensor/xtensor.hpp>
@@ -144,7 +145,9 @@ namespace evalhyd
     ///       evalhyd::evald(obs, prd, {"NSE"}, "none", 1, -9, msk);
     ///
     /// \endrst
-    template <class D2, class B2>
+    template <class D2, class B2,
+              std::enable_if_t<xt::has_rank_t<D2, 2>::value, int> = 0,
+              std::enable_if_t<xt::has_rank_t<B2, 2>::value, int> = 0>
     std::vector<xt::xarray<double>> evald(
             const xt::xexpression<D2>& q_obs,
             const xt::xexpression<D2>& q_prd,
diff --git a/include/evalhyd/evalp.hpp b/include/evalhyd/evalp.hpp
index d5e4831..908ac99 100644
--- a/include/evalhyd/evalp.hpp
+++ b/include/evalhyd/evalp.hpp
@@ -122,7 +122,10 @@ namespace evalhyd
     ///       evalhyd::evalp(obs, prd, {"CRPS"});
     ///
     /// \endrst
-    template <class D2, class D4, class B4>
+    template <class D2, class D4, class B4,
+              std::enable_if_t<xt::has_rank_t<D2, 2>::value, int> = 0,
+              std::enable_if_t<xt::has_rank_t<D4, 4>::value, int> = 0,
+              std::enable_if_t<xt::has_rank_t<B4, 4>::value, int> = 0>
     std::vector<xt::xarray<double>> evalp(
             const xt::xexpression<D2>& q_obs,
             const xt::xexpression<D4>& q_prd,
-- 
GitLab