21 #include <type_traits>
38 template <
typename T,
class... Axes>
42 static constexpr
size_t DIM =
sizeof...(Axes);
51 using point_t = std::array<ActsScalar, DIM>;
58 Grid(std::tuple<Axes...>&
axes) =
delete;
77 template <
class Po
int>
96 template <
class Po
int>
150 template <
class Po
int>
183 template <
class Po
int>
211 template <
class Po
int>
228 template <
class Po
int>
258 template <
class Po
int>
262 for (
size_t i = 0;
i <
DIM;
i++) {
263 shiftedPoint[
i] = point[
i] + width[
i] / 2;
348 template <
class Point,
typename U =
T,
349 typename = std::enable_if_t<
351 std::array<ActsScalar, DIM>, U>
::value>>
354 constexpr
size_t nCorners = 1 <<
DIM;
357 std::array<value_type, nCorners> neighbors{};
369 for (
size_t index : closestIndices) {
388 template <
class Po
int>
440 size_t size(
bool fullCounter =
true)
const {
442 std::size_t current_size = 1;
445 for (
const auto&
value : nBinsArray) {
446 current_size *=
value + 2;
451 for (
const auto&
value : nBinsArray) {
452 current_size *=
value;
458 std::array<const IAxis*, DIM>
axes()
const {
472 const index_t& localBins)
const {