1162852Sdes// -*- C++ -*- 2162852Sdes//===----------------------------------------------------------------------===// 3162852Sdes// 4162852Sdes// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5162852Sdes// See https://llvm.org/LICENSE.txt for license information. 6162852Sdes// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7162852Sdes// 8162852Sdes//===----------------------------------------------------------------------===// 9162852Sdes 10162852Sdes#ifndef _LIBCPP___ITERATOR_RANGES_ITERATOR_TRAITS_H 11162852Sdes#define _LIBCPP___ITERATOR_RANGES_ITERATOR_TRAITS_H 12162852Sdes 13162852Sdes#include <__config> 14162852Sdes#include <__fwd/pair.h> 15162852Sdes#include <__ranges/concepts.h> 16162852Sdes#include <__type_traits/add_const.h> 17162852Sdes#include <__type_traits/remove_const.h> 18162852Sdes 19162852Sdes#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 20162852Sdes# pragma GCC system_header 21162852Sdes#endif 22162852Sdes 23162852Sdes_LIBCPP_BEGIN_NAMESPACE_STD 24180746Sdes 25180746Sdes#if _LIBCPP_STD_VER >= 23 26180746Sdes 27180746Sdestemplate <ranges::input_range _Range> 28180746Sdesusing __range_key_type = __remove_const_t<typename ranges::range_value_t<_Range>::first_type>; 29180746Sdes 30180746Sdestemplate <ranges::input_range _Range> 31180746Sdesusing __range_mapped_type = typename ranges::range_value_t<_Range>::second_type; 32180746Sdes 33180746Sdestemplate <ranges::input_range _Range> 34180746Sdesusing __range_to_alloc_type = 35180746Sdes pair<add_const_t<typename ranges::range_value_t<_Range>::first_type>, 36180746Sdes typename ranges::range_value_t<_Range>::second_type>; 37180746Sdes 38162852Sdes#endif 39162852Sdes 40162852Sdes_LIBCPP_END_NAMESPACE_STD 41162852Sdes 42162852Sdes#endif // _LIBCPP___ITERATOR_RANGES_ITERATOR_TRAITS_H 43162852Sdes