14 typename T::value_type;
15 requires std::is_arithmetic_v<typename T::value_type>;
16 requires !std::same_as<T, std::string>;
18 { state.size() } -> std::convertible_to<std::size_t>;
19 { state.begin() } -> std::random_access_iterator;
20 { state.end() } -> std::random_access_iterator;
22 { state[0] } -> std::convertible_to<typename T::value_type>;