5 #ifndef VCCC_RANGES_RANGE_MAPPED_T_HPP
6 #define VCCC_RANGES_RANGE_MAPPED_T_HPP
19 template<
typename T,
typename =
void>
20 struct has_second_type : std::false_type {};
22 struct has_second_type<T,
void_t<typename T::second_type>> : std::true_type {};
24 template<
typename T,
typename =
void>
25 struct has_second_tuple_element : std::false_type {};
27 struct has_second_tuple_element<T,
void_t<
std::tuple_element_t<1, T>>> : std::true_type {};
31 template<
typename RV,
bool v>
32 struct guide_map<RV, true, v> {
33 using type =
typename RV::second_type;
36 struct guide_map<RV, false, true> {
37 using type = std::tuple_element_t<1, RV>;
41 struct range_mapped_impl {};
43 struct range_mapped_impl<R, true> : guide_map<range_value_t<R>> {};
typename range_mapped< R >::type range_mapped_t
Definition: range_mapped_t.hpp:55
Definition: matrix.hpp:495
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
Definition: range_mapped_t.hpp:48