
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users- bounces@lists.boost.org] On Behalf Of Jeremiah Willcock Sent: 01 March 2012 16:48 To: boost-users@lists.boost.org Subject: Re: [Boost-users] enable_if and templated operator() of member of class template
On Thu, 1 Mar 2012, MM wrote: The main issue here is that the condition in enable_if does not depend on the template parameter to operator(); see the version in http://codepad.org/6AORo7tU, in which I've used boost::enable_if and added some tests. One fix is to make the enable_if condition dependent, as in http://codepad.org/916Tl6W8 (there were a number of other issues in the code; note that the is_same
condition needs to be in the enable_if since the body of the function will not always compile when that is false). Please see if that last paste works for you. -- Jeremiah Willcock
Thank you, http://codepad.org/916Tl6W8 compiled. Using std::enable_if as
well. (msvc10 uses their TR1 impl).
I need an extra check for the 2nd operator() of the visitor, that
variant_iter_t is actually identical to iter_t::Iterator embedded type.
Basically, it treats the case where iter_t is a reverse_iterator of the
iterators in my variant, and we need to check that we're applying visitation
on the proper iterator.
So line 43: is_same should be