|
Boost : |
Subject: Re: [boost] [range] iterator_range operators are too greedy
From: Jeffrey Lee Hellrung, Jr. (jeffrey.hellrung_at_[hidden])
Date: 2012-11-08 08:57:06
On Thu, Nov 8, 2012 at 12:35 AM, Gennadiy Rozental <rogeeff_at_[hidden]>wrote:
> Hi,
>
> iterator_range operators are defined like this:
>
> template< class IteratorT, class ForwardRange >
> inline bool operator==( const ForwardRange& l,
> const iterator_range<IteratorT>& r )
> {
> return boost::equal( l, r );
> }
>
> These needs to be restricted with enable_if on type of first argument.
> I have a scenario where I want to define operator== for my own type
> and want to be able to use it with iterator_range as second argument.
> Above definition makes it impossible.
>
Is your type a range? How does its semantics differ from the operator==
above? Presumably if you want to specifically address
boost::iterator_range, then
template< class I >
inline bool operator==(my_type, iterator_range<I>);
should be a preferable overload.
- Jeff
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk