4#ifndef TETL_ITERATOR_INDIRECTLY_READABLE_TRAITS_HPP
5#define TETL_ITERATOR_INDIRECTLY_READABLE_TRAITS_HPP
7#include <etl/_concepts/same_as.hpp>
8#include <etl/_type_traits/is_array.hpp>
9#include <etl/_type_traits/is_object.hpp>
10#include <etl/_type_traits/remove_cv.hpp>
11#include <etl/_type_traits/remove_extent.hpp>
18struct maybe_value_type { };
21 requires etl::is_object_v<T>
22struct maybe_value_type<T> {
23 using value_type =
etl::remove_cv_t<T>;
27concept has_member_value_type =
requires {
typename T::value_type; };
30concept has_member_element_type =
requires {
typename T::element_type; };
44 requires etl::is_array_v<I>
46 using value_type =
etl::remove_cv_t<
etl::remove_extent_t<I>>;
49template <
detail::has_member_value_type T>
52template <
detail::has_member_element_type T>
55template <
detail::has_member_value_type T>
56 requires detail::has_member_element_type<T>
59template <
detail::has_member_value_type T>
61 detail::has_member_element_type<T>
62 and etl::same_as<
etl::remove_cv_t<
typename T::element_type>,
etl::remove_cv_t<
typename T::value_type>>
Definition adjacent_find.hpp:9
Definition indirectly_readable_traits.hpp:35