30 using first_value_type =
typename It::value_type::first_type;
32 using decay_first_value_type =
typename std::remove_cv_t<typename std::remove_reference_t<first_value_type>>;
36 using const_ref_to_first =
const decay_first_value_type &;
37 return boost::make_transform_iterator(it, [](
const auto &pair) -> const_ref_to_first {
return pair.first; });
52 using second_value_type =
typename It::value_type::second_type;
53 using decay_second_value_type =
typename std::remove_cv_t<typename std::remove_reference_t<second_value_type>>;
54 using ref_to_second = decay_second_value_type &;
56 return boost::make_transform_iterator(it, [](
auto &pair) -> ref_to_second {
return pair.second; });
62 using second_value_type =
typename It::value_type::second_type;
63 using decay_second_value_type =
typename std::remove_cv_t<typename std::remove_reference_t<second_value_type>>;
64 using const_ref_to_second =
const decay_second_value_type &;
66 return boost::make_transform_iterator(it, [](
const auto &pair) -> const_ref_to_second {
return pair.second; });