4 #include "generated_config.hpp"
10 template<
typename T> constexpr
const T &as_const(T &t) noexcept {
return t; }
14 template<
typename T, std::
size_t N>
15 constexpr std::size_t get_array_size(T (&)[N]) noexcept
24 template<
typename T,
size_t N>
25 struct hash<array<T, N> >
27 typedef array<T, N> argument_type;
28 typedef size_t result_type;
30 result_type operator()(
const argument_type& a)
const
34 for (result_type i = 0; i < N; ++i)
36 h = h * 31 + hasher(a[i]);
44 constexpr
size_t clog2(
size_t n)
46 return ( (n<2) ? 0 : 1+clog2(n/2));
49 inline constexpr
bool double_eq(
double lhs,
double rhs) {
50 return (lhs <= rhs + DOUBLE_DELTA) && (lhs >= rhs - DOUBLE_DELTA);