Ticket #4905: range.diff
File range.diff, 2.2 KB (added by , 12 years ago) |
---|
-
boost/range/adaptor/map.hpp
14 14 #include <boost/range/adaptor/transformed.hpp> 15 15 #include <boost/range/iterator_range.hpp> 16 16 #include <boost/range/value_type.hpp> 17 #include <boost/range/reference.hpp> 17 18 18 19 namespace boost 19 20 { … … 25 26 template< class Map > 26 27 struct select_first 27 28 { 28 typedef BOOST_DEDUCED_TYPENAME range_ value<Map>::type pair_t;29 typedef const BOOST_DEDUCED_TYPENAME pair_t::first_type&29 typedef BOOST_DEDUCED_TYPENAME range_reference<const Map>::type reference; 30 typedef const BOOST_DEDUCED_TYPENAME range_value<Map>::type::first_type& 30 31 result_type; 31 32 32 result_type operator()( const pair_t&r ) const33 result_type operator()( reference r ) const 33 34 { 34 35 return r.first; 35 36 } … … 38 39 template< class Map > 39 40 struct select_second_mutable 40 41 { 41 typedef BOOST_DEDUCED_TYPENAME range_value<Map>::type pair_t; 42 typedef BOOST_DEDUCED_TYPENAME pair_t::second_type& result_type; 42 typedef BOOST_DEDUCED_TYPENAME range_reference<Map>::type reference; 43 typedef BOOST_DEDUCED_TYPENAME range_value<Map>::type::second_type& 44 result_type; 43 45 44 result_type operator()( pair_t&r ) const46 result_type operator()( reference r ) const 45 47 { 46 48 return r.second; 47 49 } … … 50 52 template< class Map > 51 53 struct select_second_const 52 54 { 53 typedef BOOST_DEDUCED_TYPENAME range_ value<Map>::type pair_t;54 typedef const BOOST_DEDUCED_TYPENAME pair_t::second_type&55 typedef BOOST_DEDUCED_TYPENAME range_reference<const Map>::type reference; 56 typedef const BOOST_DEDUCED_TYPENAME range_value<Map>::type::second_type& 55 57 result_type; 56 58 57 result_type operator()( const pair_t&r ) const59 result_type operator()( reference r ) const 58 60 { 59 61 return r.second; 60 62 }