forked from boostorg/range
Boost.Range algorithms are now in the boost::range namespace and brought into boost by the appropriate using statement. This allows better interoperation with Boost.Algorithm since errors only occur when the use calls similarly named ambiguous functions. In this event the user can disambiguate by using algorithm::xxx() or range::xxx(). This iteration also updates the concept assert code in the range algorithms.
[SVN r61023]
This commit is contained in:
@ -18,49 +18,55 @@
|
||||
|
||||
namespace boost
|
||||
{
|
||||
/// \brief template function find
|
||||
///
|
||||
/// range-based version of the find std algorithm
|
||||
///
|
||||
/// \pre SinglePassRange is a model of the SinglePassRangeConcept
|
||||
template< class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
|
||||
find( SinglePassRange& rng, const Value& val )
|
||||
namespace range
|
||||
{
|
||||
boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
|
||||
return std::find(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
/// \overload
|
||||
template< class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange>::type
|
||||
find( const SinglePassRange& rng, const Value& val )
|
||||
{
|
||||
boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
|
||||
return std::find(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
|
||||
/// \brief template function find
|
||||
///
|
||||
/// range-based version of the find std algorithm
|
||||
///
|
||||
/// \pre SinglePassRange is a model of the SinglePassRangeConcept
|
||||
template< class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
|
||||
find( SinglePassRange& rng, const Value& val )
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
|
||||
return std::find(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
/// \overload
|
||||
template< class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange>::type
|
||||
find( const SinglePassRange& rng, const Value& val )
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
|
||||
return std::find(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
|
||||
// range_return overloads
|
||||
|
||||
/// \overload
|
||||
template< range_return_value re, class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange,re>::type
|
||||
find( SinglePassRange& rng, const Value& val )
|
||||
{
|
||||
boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
|
||||
return range_return<SinglePassRange,re>::
|
||||
pack(std::find(boost::begin(rng), boost::end(rng), val),
|
||||
rng);
|
||||
}
|
||||
/// \overload
|
||||
template< range_return_value re, class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_return<const SinglePassRange,re>::type
|
||||
find( const SinglePassRange& rng, const Value& val )
|
||||
{
|
||||
boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
|
||||
return range_return<const SinglePassRange,re>::
|
||||
pack(std::find(boost::begin(rng), boost::end(rng), val),
|
||||
rng);
|
||||
}
|
||||
/// \overload
|
||||
template< range_return_value re, class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange,re>::type
|
||||
find( SinglePassRange& rng, const Value& val )
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
|
||||
return range_return<SinglePassRange,re>::
|
||||
pack(std::find(boost::begin(rng), boost::end(rng), val),
|
||||
rng);
|
||||
}
|
||||
/// \overload
|
||||
template< range_return_value re, class SinglePassRange, class Value >
|
||||
inline BOOST_DEDUCED_TYPENAME range_return<const SinglePassRange,re>::type
|
||||
find( const SinglePassRange& rng, const Value& val )
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
|
||||
return range_return<const SinglePassRange,re>::
|
||||
pack(std::find(boost::begin(rng), boost::end(rng), val),
|
||||
rng);
|
||||
}
|
||||
|
||||
} // namespace range
|
||||
using range::find;
|
||||
}
|
||||
|
||||
#endif // include guard
|
||||
|
Reference in New Issue
Block a user