mirror of
https://github.com/boostorg/range.git
synced 2025-08-01 05:44:36 +02:00
112 lines
5.0 KiB
Plaintext
112 lines
5.0 KiB
Plaintext
17. post-review question: should Range mean lowest common denominator? or
|
|
perhaps Forward Range? problem with not being explicit.
|
|
|
|
18. maybe iterator_range operator==() should be defined when rhs or lhs
|
|
take a forward range argument; this comparison function should
|
|
then call std::lexigraphical_compare(....). Example:
|
|
|
|
sub_range<string> sub = ...;
|
|
if( sub == "foo" )
|
|
|
|
/*
|
|
namespace range_detail
|
|
{
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
|
|
make_sub_range_impl( Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
|
|
{
|
|
BOOST_ASSERT( advance_begin >= 0 );
|
|
BOOST_ASSERT( advance_end >= 0 );
|
|
|
|
BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type
|
|
new_begin = begin( r ),
|
|
new_end = end( r );
|
|
std::advance( new_begin, advance_begin );
|
|
std::advance( new_end, -advance_end );
|
|
return make_iterator_range( new_begin, new_end );
|
|
}
|
|
|
|
|
|
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
|
|
make_super_range_impl( Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
|
|
{
|
|
BOOST_ASSERT( advance_begin >= 0 );
|
|
BOOST_ASSERT( advance_end >= 0 );
|
|
|
|
BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type
|
|
new_begin = begin( r ),
|
|
new_end = end( r );
|
|
std::advance( new_begin, -advance_begin );
|
|
std::advance( new_end, advance_end );
|
|
return make_iterator_range( new_begin, new_end );
|
|
}
|
|
|
|
}*/
|
|
|
|
/*
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
|
|
make_sub_range( Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end = 0 )
|
|
{
|
|
return range_detail::make_sub_range_impl( r, advance_begin, advance_end );
|
|
}
|
|
|
|
|
|
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
|
|
make_super_range( Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end = 0 )
|
|
{
|
|
return range_detail::make_super_range_impl( r, advance_begin, advance_end );
|
|
}*/
|
|
/*
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
|
|
make_sub_range( Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end = 0 )
|
|
{
|
|
return range_detail::make_sub_range_impl( r, advance_begin, advance_end );
|
|
}
|
|
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<Range>::type >
|
|
make_sub_range( const Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end = 0 )
|
|
{
|
|
return range_detail::make_sub_range_impl( r, advance_begin, advance_end );
|
|
}
|
|
|
|
|
|
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
|
|
make_super_range( Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end = 0 )
|
|
{
|
|
return range_detail::make_super_range_impl( r, advance_begin, advance_end );
|
|
}
|
|
|
|
|
|
template< class Range >
|
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<Range>::type >
|
|
make_super_range( const Range& r,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end = 0 )
|
|
{
|
|
return range_detail::make_super_range_impl( r, advance_begin, advance_end );
|
|
}*/
|
|
|