diff --git a/libs/util/include/psemek/util/spatial_array.hpp b/libs/util/include/psemek/util/spatial_array.hpp index eec15f10..3f2df07c 100644 --- a/libs/util/include/psemek/util/spatial_array.hpp +++ b/libs/util/include/psemek/util/spatial_array.hpp @@ -50,6 +50,8 @@ namespace psemek::util template T & spatial_array::get(Ix ... index) { + static_assert(sizeof...(Ix) == N, "wrong number of indices"); + if (!contains(index...)) expand(index...); @@ -63,6 +65,8 @@ namespace psemek::util template T * spatial_array::get_if(Ix ... index) { + static_assert(sizeof...(Ix) == N, "wrong number of indices"); + if (!contains(index...)) return nullptr; @@ -76,6 +80,8 @@ namespace psemek::util template T const * spatial_array::get_if(Ix ... index) const { + static_assert(sizeof...(Ix) == N, "wrong number of indices"); + if (!contains(index...)) return nullptr; @@ -89,6 +95,8 @@ namespace psemek::util template T const & spatial_array::at(Ix ... index) const { + static_assert(sizeof...(Ix) == N, "wrong number of indices"); + auto const size = array_.dims(); Index ix[N] {index...}; for (std::size_t i = 0; i < N; ++i) @@ -104,6 +112,8 @@ namespace psemek::util template bool spatial_array::contains(Ix ... index) const { + static_assert(sizeof...(Ix) == N, "wrong number of indices"); + auto const size = array_.dims(); Index ix[N] {index...}; for (std::size_t i = 0; i < N; ++i) @@ -116,6 +126,8 @@ namespace psemek::util template void spatial_array::expand(Ix ... index) { + static_assert(sizeof...(Ix) == N, "wrong number of indices"); + Index ix[N] {index...}; if (array_.empty())