#ifndef PYTHONIC_INCLUDE_UTILS_META_HPP #define PYTHONIC_INCLUDE_UTILS_META_HPP PYTHONIC_NS_BEGIN namespace utils { template struct all_of; template <> struct all_of<> : std::true_type { }; template struct all_of { static constexpr bool value = V0 && all_of::value; }; template struct all_of { static constexpr bool value = V0; }; template struct any_of; template <> struct any_of<> : std::false_type { }; template struct any_of { static constexpr bool value = V0 || any_of::value; }; template struct any_of { static constexpr bool value = V0; }; template struct front { using type = T0; }; template struct max_element; template struct max_element { static constexpr size_t _value = max_element::value; static constexpr size_t _index = max_element::index; static constexpr size_t value = N0 > _value ? N0 : _value; static constexpr size_t index = N0 == value ? 0 : 1 + _index; }; template struct max_element { static constexpr size_t value = V0; static constexpr size_t index = 0; }; } PYTHONIC_NS_END #endif