17 template <
class Derived,
typename EdgeT =
double>
26 template<
typename T = EdgeT>
28 return static_cast<const Derived*
>(
this)->
template max<0>();
34 template<
typename T = EdgeT>
36 return static_cast<const Derived*
>(
this)->
template min<0>();
42 template<
typename T = EdgeT>
44 return static_cast<const Derived*
>(
this)->
template mid<0>();
50 template<
typename T = EdgeT>
52 return static_cast<const Derived*
>(
this)->
template width<0>();
58 template<
typename T = EdgeT>
60 return static_cast<const Derived*
>(
this)->
template edge<0>();
69 template <
class Derived,
typename EdgeT =
double>
78 template<
typename T = EdgeT>
80 return static_cast<const Derived*
>(
this)->
template max<1>();
86 template<
typename T = EdgeT>
88 return static_cast<const Derived*
>(
this)->
template min<1>();
94 template<
typename T = EdgeT>
96 return static_cast<const Derived*
>(
this)->
template mid<1>();
102 template<
typename T = EdgeT>
104 return static_cast<const Derived*
>(
this)->
template width<1>();
110 template<
typename T = EdgeT>
112 return static_cast<const Derived*
>(
this)->
template edge<1>();
121 template <
class Derived,
typename EdgeT =
double>
128 template<
typename T = EdgeT>
130 return static_cast<const Derived*
>(
this)->
template max<2>();
136 template<
typename T = EdgeT>
138 return static_cast<const Derived*
>(
this)->
template min<2>();
144 template<
typename T = EdgeT>
146 return static_cast<const Derived*
>(
this)->
template mid<2>();
152 template<
typename T = EdgeT>
154 return static_cast<const Derived*
>(
this)->
template width<2>();
160 template<
typename T = EdgeT>
162 return static_cast<const Derived*
>(
this)->
template edge<2>();
Anonymous namespace to limit visibility.
std::enable_if_t<!std::is_floating_point< EdgeT >::value, EdgeT > enable_if_DAxisT
Checks if edge type is discrete and returns edge type.
std::enable_if_t< std::is_floating_point< EdgeT >::value, EdgeT > enable_if_CAxisT
Checks if edge type is continuous and returns edge type.
CRTP mixin introducing convenience aliases along X axis.
enable_if_CAxisT< T > xMin() const noexcept
Lower bin edge along X axis.
enable_if_CAxisT< T > xMax() const noexcept
Upper bin edge along X axis.
enable_if_CAxisT< T > xMid() const noexcept
Bin centre along X axis.
enable_if_DAxisT< T > xEdge() const noexcept
Bin edge along X axis.
enable_if_CAxisT< T > xWidth() const noexcept
Bin width along X axis.
CRTP mixin introducing convenience aliases along Y axis.
enable_if_CAxisT< T > yWidth() const noexcept
Bin width along Y axis.
enable_if_DAxisT< T > yEdge() const noexcept
Bin edge along Y axis.
enable_if_CAxisT< T > yMax() const noexcept
Upper bin edge along Y axis.
enable_if_CAxisT< T > yMid() const noexcept
Bin centre along Y axis.
enable_if_CAxisT< T > yMin() const noexcept
Lower bin edge along Y axis.
CRTP mixin introducing convenience aliases along Z axis.
enable_if_CAxisT< T > zMax() const noexcept
Upper bin edge along Z axis.
enable_if_CAxisT< T > zMid() const noexcept
Bin centre along Z axis.
enable_if_CAxisT< T > zWidth() const noexcept
Bin width along Z axis.
enable_if_CAxisT< T > zMin() const noexcept
Lower bin edge along Z axis.
enable_if_DAxisT< T > zEdge() const noexcept
Bin edge along Z axis.