Boost.Range correct missing items from merge by merging these changes manually.

This changeset is what should have happened with the prior svn merge operation.

[SVN r61519]
This commit is contained in:
Neil Groves
2010-04-23 23:18:59 +00:00
parent a47f15a98f
commit f9eeb5d447
6 changed files with 18 additions and 9 deletions

View File

@ -26,6 +26,7 @@ namespace boost
/// range-based version of the fill_n std algorithm /// range-based version of the fill_n std algorithm
/// ///
/// \pre ForwardRange is a model of the ForwardRangeConcept /// \pre ForwardRange is a model of the ForwardRangeConcept
/// \pre n <= std::distance(boost::begin(rng), boost::end(rng))
template< class ForwardRange, class Size, class Value > template< class ForwardRange, class Size, class Value >
inline ForwardRange& fill_n(ForwardRange& rng, Size n, const Value& val) inline ForwardRange& fill_n(ForwardRange& rng, Size n, const Value& val)
{ {

View File

@ -24,29 +24,32 @@ namespace boost
{ {
template< class Container > template< class Container >
inline void erase( Container& on, inline Container& erase( Container& on,
iterator_range<BOOST_DEDUCED_TYPENAME Container::iterator> to_erase ) iterator_range<BOOST_DEDUCED_TYPENAME Container::iterator> to_erase )
{ {
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> )); BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
on.erase( boost::begin(to_erase), boost::end(to_erase) ); on.erase( boost::begin(to_erase), boost::end(to_erase) );
return on;
} }
template< class Container, class T > template< class Container, class T >
inline void remove_erase( Container& on, const T& val ) inline Container& remove_erase( Container& on, const T& val )
{ {
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> )); BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
on.erase( on.erase(
std::remove(boost::begin(on), boost::end(on), val), std::remove(boost::begin(on), boost::end(on), val),
boost::end(on)); boost::end(on));
return on;
} }
template< class Container, class Pred > template< class Container, class Pred >
inline void remove_erase_if( Container& on, Pred pred ) inline Container& remove_erase_if( Container& on, Pred pred )
{ {
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> )); BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
on.erase( on.erase(
std::remove_if(boost::begin(on), boost::end(on), pred), std::remove_if(boost::begin(on), boost::end(on), pred),
boost::end(on)); boost::end(on));
return on;
} }
} // namespace range } // namespace range

View File

@ -23,15 +23,16 @@ namespace boost
{ {
template< class Container, class Range > template< class Container, class Range >
inline void insert( Container& on, inline Container& insert( Container& on,
BOOST_DEDUCED_TYPENAME Container::iterator before, BOOST_DEDUCED_TYPENAME Container::iterator before,
const Range& from ) const Range& from )
{ {
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> )); BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Range> )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Range> ));
BOOST_ASSERT( (void*)&on != (void*)&from && BOOST_ASSERT( (void*)&on != (void*)&from &&
"cannot copy from a container to itself" ); "cannot copy from a container to itself" );
on.insert( before, boost::begin(from), boost::end(from) ); on.insert( before, boost::begin(from), boost::end(from) );
return on;
} }
} // namespace range } // namespace range

View File

@ -22,7 +22,7 @@ namespace boost
{ {
template< class ForwardRange, class Value > template< class ForwardRange, class Value >
inline void iota( ForwardRange& rng, Value x ) inline ForwardRange& iota( ForwardRange& rng, Value x )
{ {
BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> )); BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
typedef BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type iterator_t; typedef BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type iterator_t;
@ -30,6 +30,8 @@ inline void iota( ForwardRange& rng, Value x )
iterator_t last_target = ::boost::end(rng); iterator_t last_target = ::boost::end(rng);
for (iterator_t target = ::boost::begin(rng); target != last_target; ++target, ++x) for (iterator_t target = ::boost::begin(rng); target != last_target; ++target, ++x)
*target = x; *target = x;
return rng;
} }
} // namespace range } // namespace range

View File

@ -23,13 +23,14 @@ namespace boost
{ {
template< class Container, class Range > template< class Container, class Range >
inline void push_back( Container& on, const Range& from ) inline Container& push_back( Container& on, const Range& from )
{ {
BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Container> )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Container> ));
BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const Range> )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const Range> ));
BOOST_ASSERT( (void*)&on != (void*)&from && BOOST_ASSERT( (void*)&on != (void*)&from &&
"cannot copy from a container to itself" ); "cannot copy from a container to itself" );
on.insert( on.end(), boost::begin(from), boost::end(from) ); on.insert( on.end(), boost::begin(from), boost::end(from) );
return on;
} }
} // namespace range } // namespace range

View File

@ -23,13 +23,14 @@ namespace boost
{ {
template< class Container, class Range > template< class Container, class Range >
inline void push_front( Container& on, const Range& from ) inline Container& push_front( Container& on, const Range& from )
{ {
BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Container> )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Container> ));
BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const Range> )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const Range> ));
BOOST_ASSERT( (void*)&on != (void*)&from && BOOST_ASSERT( (void*)&on != (void*)&from &&
"cannot copy from a container to itself" ); "cannot copy from a container to itself" );
on.insert( on.begin(), boost::begin(from), boost::end(from) ); on.insert( on.begin(), boost::begin(from), boost::end(from) );
return on;
} }
} // namespace range } // namespace range