inline SPROUT_CONSTEXPR FloatType string_to_float(sprout::basic_string<Elem, N, Traits> const& str) { return sprout::detail::str_to_float<FloatType>(str.begin()); }
inline SPROUT_CONSTEXPR FloatType string_to_float(sprout::basic_string<Elem, N, Traits> const& str, std::size_t* idx) { return !idx ? sprout::detail::str_to_float<FloatType>(str.begin()) : sprout::detail::string_to_float_dynamic<FloatType>(str, idx) ; }
inline SPROUT_CONSTEXPR IntType string_to_int(sprout::basic_string<Elem, N, Traits> const& str, std::size_t* idx, int base = 10) { return !idx ? sprout::detail::str_to_int<IntType>(str.begin(), base) : sprout::detail::string_to_int_dynamic<IntType>(str, idx, base) ; }
inline SPROUT_CONSTEXPR IntType string_to_int(sprout::basic_string<Elem, N, Traits> const& str, int base = 10) { return sprout::detail::str_to_int<IntType>(str.begin(), base); }
inline SPROUT_CONSTEXPR std::size_t hash_value(sprout::basic_string<T, N, Traits> const& v) { return sprout::hash_range(v.begin(), v.end()); }