#ifndef _LIBCPP___ITERATOR_CONCEPTS_H
#define _LIBCPP___ITERATOR_CONCEPTS_H
#include <__concepts/arithmetic.h>
#include <__concepts/assignable.h>
#include <__concepts/common_reference_with.h>
#include <__concepts/constructible.h>
#include <__concepts/copyable.h>
#include <__concepts/derived_from.h>
#include <__concepts/equality_comparable.h>
#include <__concepts/invocable.h>
#include <__concepts/movable.h>
#include <__concepts/predicate.h>
#include <__concepts/regular.h>
#include <__concepts/relation.h>
#include <__concepts/same_as.h>
#include <__concepts/semiregular.h>
#include <__concepts/totally_ordered.h>
#include <__config>
#include <__functional/invoke.h>
#include <__iterator/incrementable_traits.h>
#include <__iterator/iter_move.h>
#include <__iterator/iterator_traits.h>
#include <__iterator/readable_traits.h>
#include <__memory/pointer_traits.h>
#include <__type_traits/add_pointer.h>
#include <__type_traits/common_reference.h>
#include <__type_traits/is_pointer.h>
#include <__type_traits/is_primary_template.h>
#include <__type_traits/is_reference.h>
#include <__type_traits/remove_cv.h>
#include <__type_traits/remove_cvref.h>
#include <__utility/forward.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
_LIBCPP_BEGIN_NAMESPACE_STD
#if _LIBCPP_STD_VER >= 20
__indirectly_readable_impl;
indirectly_readable;
__projected_iterator_t;
__projected_projection_t;
__specialization_of_projected;
template <class _Tp>
struct __indirect_value_t_impl { … };
__indirect_value_t_impl<_Tp>;
__indirect_value_t;
iter_common_reference_t;
indirectly_writable;
__integer_like;
__signed_integer_like;
weakly_incrementable;
incrementable;
input_or_output_iterator;
sentinel_for;
disable_sized_sentinel_for;
sized_sentinel_for;
input_iterator;
output_iterator;
forward_iterator;
bidirectional_iterator;
random_access_iterator;
contiguous_iterator;
__has_arrow;
indirectly_unary_invocable;
indirectly_regular_unary_invocable;
indirect_unary_predicate;
indirect_binary_predicate;
indirect_equivalence_relation;
indirect_strict_weak_order;
indirect_result_t;
indirectly_movable;
indirectly_movable_storable;
indirectly_copyable;
indirectly_copyable_storable;
#endif
__has_random_access_iterator_category_or_concept;
#else
= __has_random_access_iterator_category<_Tp>;
#endif
_LIBCPP_END_NAMESPACE_STD
#endif