AMDG On 03/05/2016 01:36 AM, Vicente J. Botet Escriba wrote:
Le 05/03/2016 01:11, Paul Fultz II a écrit :
On Friday, March 4, 2016 at 5:19:52 PM UTC-6, Steven Watanabe wrote:
On 03/04/2016 11:55 AM, Vicente J. Botet Escriba wrote:
#include
struct identity { template<class T> T operator()(T t) { return t; } };
int main() { boost::fit::conditional(identity(), identity())(0); }
1> boost\fit\conditional.hpp(84): error C2500: 'boost::fit::detail::conditional_kernel
': 'identity' is already a direct base class 1> with 1> [ 1> F1=identity, 1> F2=identity 1> ] 1> This is by design. I should document this. It makes absolutely no sense to pass the same function to conditional, and is most likely a mistake in the users code.
I disagree that this makes no sense. It
would be true if we were talking about match,
but for conditional, this degenerate case has
a clear meaning, since conditional chooses
the first possible function. Forbidding it
creates a special case, and special cases
are bad for generic code. Of course, my
example is a bit silly, because I was
trying to create a minimal reproduction,
but it's quite possible to have a situation
where you don't know and don't care whether
the arguments are the same type.
(warning: untested code)
template