diff --git a/include/evalhyd/evald.hpp b/include/evalhyd/evald.hpp index ae72beab38001e33ed971acedb4e233812214192..e2f5ddd73e596c5928d8ca0b811b1460181fe506 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 d5e4831b71e65bd1e313a2e50d96dd376d1ae9b5..908ac997ab4294f7e41f1eae6590bc56a7008fbc 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,