1#ifndef LIBSBX_UTILITY_ITERATOR_HPP_
2#define LIBSBX_UTILITY_ITERATOR_HPP_
8namespace sbx::utility {
10template<
typename Category,
typename Type,
typename Distance = std::ptrdiff_t,
typename Po
inter = Type*,
typename Reference = Type&>
12 using iterator_category = Category;
13 using value_type = Type;
14 using difference_type = Distance;
15 using pointer = Pointer;
16 using reference = Reference;
19template<
typename Type>
20concept iterable =
requires(Type t) {
21 { std::begin(t) } -> std::same_as<typename Type::iterator>;
22 { std::end(t) } -> std::same_as<typename Type::iterator>;
23} ||
requires(Type t) {
24 { std::begin(t) } -> std::same_as<typename Type::const_iterator>;
25 { std::end(t) } -> std::same_as<typename Type::const_iterator>;
26} || std::is_array_v<Type>;
Definition: iterator.hpp:11