17 #include <type_traits>
37 template <
typename T,
class... Axes>
41 static constexpr
size_t DIM =
sizeof...(Axes);
75 template <
class Po
int>
94 template <
class Po
int>
148 template <
class Po
int>
181 template <
class Po
int>
209 template <
class Po
int>
226 template <
class Po
int>
256 template <
class Po
int>
260 for (
size_t i = 0; i <
DIM; i++) {
261 shiftedPoint[i] = point[i] + width[i] / 2;
342 class Point,
typename U =
T,
344 Point, std::array<double, DIM>, std::array<double, DIM>, U>
::value>>
347 constexpr
size_t nCorners = 1 <<
DIM;
350 std::array<value_type, nCorners> neighbors;
362 for (
size_t index : closestIndices) {
363 neighbors.at(i++) =
at(index);
381 template <
class Po
int>
414 return std::accumulate(
415 nBinsArray.begin(), nBinsArray.end(), 1,
416 [](
const size_t&
a,
const size_t&
b) {
return a * (
b + 2); });
419 std::array<const IAxis*, DIM>
axes()
const {
433 const index_t& localBins)
const {