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:
@ -17,58 +17,64 @@
|
||||
|
||||
namespace boost
|
||||
{
|
||||
/// \brief template function equal_range
|
||||
///
|
||||
/// range-based version of the equal_range std algorithm
|
||||
///
|
||||
/// \pre ForwardRange is a model of the ForwardRangeConcept
|
||||
/// \pre SortPredicate is a model of the BinaryPredicateConcept
|
||||
template<class ForwardRange, class Value>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
|
||||
>
|
||||
equal_range(ForwardRange& rng, const Value& val)
|
||||
namespace range
|
||||
{
|
||||
boost::function_requires< ForwardRangeConcept<ForwardRange> >();
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
|
||||
/// \overload
|
||||
template<class ForwardRange, class Value>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
|
||||
>
|
||||
equal_range(const ForwardRange& rng, const Value& val)
|
||||
{
|
||||
boost::function_requires< ForwardRangeConcept<ForwardRange> >();
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
|
||||
/// \overload
|
||||
template<class ForwardRange, class Value, class SortPredicate>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
|
||||
>
|
||||
equal_range(ForwardRange& rng, const Value& val, SortPredicate pred)
|
||||
{
|
||||
boost::function_requires< ForwardRangeConcept<ForwardRange> >();
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
|
||||
}
|
||||
|
||||
/// \overload
|
||||
template<class ForwardRange, class Value, class SortPredicate>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
|
||||
>
|
||||
equal_range(const ForwardRange& rng, const Value& val, SortPredicate pred)
|
||||
{
|
||||
boost::function_requires< ForwardRangeConcept<ForwardRange> >();
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
|
||||
}
|
||||
/// \brief template function equal_range
|
||||
///
|
||||
/// range-based version of the equal_range std algorithm
|
||||
///
|
||||
/// \pre ForwardRange is a model of the ForwardRangeConcept
|
||||
/// \pre SortPredicate is a model of the BinaryPredicateConcept
|
||||
template<class ForwardRange, class Value>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
|
||||
>
|
||||
equal_range(ForwardRange& rng, const Value& val)
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
|
||||
/// \overload
|
||||
template<class ForwardRange, class Value>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
|
||||
>
|
||||
equal_range(const ForwardRange& rng, const Value& val)
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val);
|
||||
}
|
||||
|
||||
/// \overload
|
||||
template<class ForwardRange, class Value, class SortPredicate>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
|
||||
>
|
||||
equal_range(ForwardRange& rng, const Value& val, SortPredicate pred)
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
|
||||
}
|
||||
|
||||
/// \overload
|
||||
template<class ForwardRange, class Value, class SortPredicate>
|
||||
inline std::pair<
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
|
||||
>
|
||||
equal_range(const ForwardRange& rng, const Value& val, SortPredicate pred)
|
||||
{
|
||||
BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||
return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
|
||||
}
|
||||
|
||||
} // namespace range
|
||||
using range::equal_range;
|
||||
} // namespace boost
|
||||
|
||||
#endif // include guard
|
||||
|
Reference in New Issue
Block a user