...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::histogram::axis::traits::static_is_inclusive — Meta-function to detect whether an axis is inclusive.
// In header: <boost/histogram/axis/traits.hpp> template<typename Axis> struct static_is_inclusive { };
Doxygen does not render this well. This is a meta-function (template alias), it accepts an axis type and represents compile-time boolean which is true or false, depending on whether the axis is inclusive or not.
An inclusive axis has a bin for every possible input value. A histogram which consists only of inclusive axes can be filled more efficiently, since input values always end up in a valid cell and there is no need to keep track of input tuples that need to be discarded.
An axis with underflow and overflow bins is always inclusive, but an axis may be inclusive under other conditions. The meta-function checks for the method constexpr static bool inclusive()
, and uses the result. If this method is not present, it uses static_options<Axis> and checks whether the underflow and overflow bits are present.