Merge pull request #48 from t-wynants/fix-ticket-12754-sfinae-friendly-overload

Ticket 12754 - sfinea friendly boost::range_details::replace_holder overloads
This commit is contained in:
neilgroves
2017-06-30 12:45:34 +01:00
committed by GitHub

View File

@ -101,12 +101,10 @@ namespace boost
void operator=(const replace_holder&); void operator=(const replace_holder&);
}; };
template< class SinglePassRange > template< class SinglePassRange,
class RangeValueType = BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>
inline replaced_range<SinglePassRange> inline replaced_range<SinglePassRange>
operator|( operator|(SinglePassRange& r, const replace_holder<RangeValueType>& f)
SinglePassRange& r,
const replace_holder<
BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>& f )
{ {
BOOST_RANGE_CONCEPT_ASSERT(( BOOST_RANGE_CONCEPT_ASSERT((
SinglePassRangeConcept<SinglePassRange>)); SinglePassRangeConcept<SinglePassRange>));
@ -114,12 +112,10 @@ namespace boost
return replaced_range<SinglePassRange>(r, f.val1, f.val2); return replaced_range<SinglePassRange>(r, f.val1, f.val2);
} }
template< class SinglePassRange > template< class SinglePassRange,
class RangeValueType = BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>
inline replaced_range<const SinglePassRange> inline replaced_range<const SinglePassRange>
operator|( operator|(const SinglePassRange& r, const replace_holder<RangeValueType>& f)
const SinglePassRange& r,
const replace_holder<
BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>& f)
{ {
BOOST_RANGE_CONCEPT_ASSERT(( BOOST_RANGE_CONCEPT_ASSERT((
SinglePassRangeConcept<const SinglePassRange>)); SinglePassRangeConcept<const SinglePassRange>));
@ -139,11 +135,10 @@ namespace boost
range_detail::forwarder2<range_detail::replace_holder>(); range_detail::forwarder2<range_detail::replace_holder>();
} }
template<class SinglePassRange> template< class SinglePassRange,
class RangeValueType = BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>
inline replaced_range<SinglePassRange> inline replaced_range<SinglePassRange>
replace(SinglePassRange& rng, replace(SinglePassRange& rng, RangeValueType from, RangeValueType to)
BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type from,
BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type to)
{ {
BOOST_RANGE_CONCEPT_ASSERT(( BOOST_RANGE_CONCEPT_ASSERT((
SinglePassRangeConcept<SinglePassRange>)); SinglePassRangeConcept<SinglePassRange>));
@ -151,11 +146,10 @@ namespace boost
return replaced_range<SinglePassRange>(rng, from, to); return replaced_range<SinglePassRange>(rng, from, to);
} }
template<class SinglePassRange> template< class SinglePassRange,
class RangeValueType = BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>
inline replaced_range<const SinglePassRange> inline replaced_range<const SinglePassRange>
replace(const SinglePassRange& rng, replace(const SinglePassRange& rng, RangeValueType from, RangeValueType to)
BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type from,
BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type to)
{ {
BOOST_RANGE_CONCEPT_ASSERT(( BOOST_RANGE_CONCEPT_ASSERT((
SinglePassRangeConcept<const SinglePassRange>)); SinglePassRangeConcept<const SinglePassRange>));