[boost][range] - manually split the implementation calls to search_n _impl and search_n_pred_impl due to a function overload resolution issue with VC10.

[SVN r67426]
This commit is contained in:
Neil Groves
2010-12-23 09:59:53 +00:00
parent 3adf4d2869
commit c66fb8e807

View File

@ -108,7 +108,7 @@ namespace range_detail
template<typename ForwardIterator, typename Integer, typename Value, template<typename ForwardIterator, typename Integer, typename Value,
typename BinaryPredicate> typename BinaryPredicate>
inline ForwardIterator inline ForwardIterator
search_n_impl(ForwardIterator first, ForwardIterator last, search_n_pred_impl(ForwardIterator first, ForwardIterator last,
Integer count, const Value& value, Integer count, const Value& value,
BinaryPredicate pred, std::forward_iterator_tag) BinaryPredicate pred, std::forward_iterator_tag)
{ {
@ -143,7 +143,7 @@ namespace range_detail
template<typename RandomAccessIterator, typename Integer, template<typename RandomAccessIterator, typename Integer,
typename Value, typename BinaryPredicate> typename Value, typename BinaryPredicate>
inline RandomAccessIterator inline RandomAccessIterator
search_n_impl(RandomAccessIterator first, RandomAccessIterator last, search_n_pred_impl(RandomAccessIterator first, RandomAccessIterator last,
Integer count, const Value& value, Integer count, const Value& value,
BinaryPredicate pred, std::random_access_iterator_tag) BinaryPredicate pred, std::random_access_iterator_tag)
{ {
@ -208,7 +208,7 @@ namespace range_detail
template<typename ForwardIterator, typename Integer, typename Value, template<typename ForwardIterator, typename Integer, typename Value,
typename BinaryPredicate> typename BinaryPredicate>
inline ForwardIterator inline ForwardIterator
search_n_impl(ForwardIterator first, ForwardIterator last, search_n_pred_impl(ForwardIterator first, ForwardIterator last,
Integer count, const Value& value, Integer count, const Value& value,
BinaryPredicate pred) BinaryPredicate pred)
{ {
@ -230,7 +230,7 @@ namespace range_detail
++first; ++first;
return first; return first;
} }
return range_detail::search_n_impl(first, last, count, return range_detail::search_n_pred_impl(first, last, count,
value, pred, cat_t()); value, pred, cat_t());
} }
} // namespace range_detail } // namespace range_detail
@ -271,7 +271,7 @@ search_n(ForwardRange& rng, Integer count, const Value& value,
BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>)); BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate, BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
BOOST_DEDUCED_TYPENAME range_value<ForwardRange>::type, const Value&>)); BOOST_DEDUCED_TYPENAME range_value<ForwardRange>::type, const Value&>));
return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), return range_detail::search_n_pred_impl(boost::begin(rng), boost::end(rng),
count, value, binary_pred); count, value, binary_pred);
} }
@ -285,7 +285,7 @@ search_n(const ForwardRange& rng, Integer count, const Value& value,
BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<const ForwardRange>)); BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<const ForwardRange>));
BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate, BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
BOOST_DEDUCED_TYPENAME range_value<const ForwardRange>::type, const Value&>)); BOOST_DEDUCED_TYPENAME range_value<const ForwardRange>::type, const Value&>));
return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), return range_detail::search_n_pred_impl(boost::begin(rng), boost::end(rng),
count, value, binary_pred); count, value, binary_pred);
} }
@ -329,7 +329,8 @@ search_n(ForwardRange& rng, Integer count, const Value& value,
BOOST_DEDUCED_TYPENAME range_value<ForwardRange>::type, BOOST_DEDUCED_TYPENAME range_value<ForwardRange>::type,
const Value&>)); const Value&>));
return range_return<ForwardRange,re>:: return range_return<ForwardRange,re>::
pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng), pack(range_detail::search_n_pred_impl(boost::begin(rng),
boost::end(rng),
count, value, pred), count, value, pred),
rng); rng);
} }
@ -346,7 +347,8 @@ search_n(const ForwardRange& rng, Integer count, const Value& value,
BOOST_DEDUCED_TYPENAME range_value<const ForwardRange>::type, BOOST_DEDUCED_TYPENAME range_value<const ForwardRange>::type,
const Value&>)); const Value&>));
return range_return<const ForwardRange,re>:: return range_return<const ForwardRange,re>::
pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng), pack(range_detail::search_n_pred_impl(boost::begin(rng),
boost::end(rng),
count, value, pred), count, value, pred),
rng); rng);
} }