Boost logo

Boost Users :

Subject: Re: [Boost-users] [Range & c++0x Lambdas] Can this be done?
From: Jeffrey Lee Hellrung, Jr. (jeffrey.hellrung_at_[hidden])
Date: 2012-11-29 01:37:30


On Wed, Nov 28, 2012 at 10:26 PM, Eric Niebler <eric_at_[hidden]> wrote:

> On 11/22/2012 11:31 AM, Jeffrey Lee Hellrung, Jr. wrote:
> > Maybe this is what you did, so I might not be suggesting something new,
> > but... Perhaps boost::result_of could have an extra conditional logic
> > branch added to it:
> > - If F::result_type exists, return F::result_type;
> > - Else:
> > - If BOOST_NO_CXX11_DECLTYPE, return F::result< F ( Args... ) >
> > - Else, if F::result<> exists, return F::result< F ( Args... ) >
> > - Else return decltype( declval<F>() ( declval< Args >()... ) )
>
> C++11 defines exactly what result_of does, as did the TR1 spec before
> it. Making boost::result_of do something different would be surprising,
> IMO.
>
> If you want to use C++11 lambdas with boost::result_of, the most
> portable solution is with an adapter, as has been suggested elsewhere in
> this thread. Not ideal, but it works.

I'm only suggesting to extend result_of for C++11 lambdas (and,
incidentally, other callable types) when result_of wouldn't know what to do
otherwise. Do you mean it would be surprising for result_of to work when it
would be expected to fail? Maybe there's something subtle I'm missing here.

I'm supposing in this, of course, that there are compilers which support
lambdas and have some form of decltype sufficient for lambdas but
insufficient to be the primary implementation of result_of (i.e., must use
TR1-style for the primary implementation). That's quite a few compilers
presently, right?

- Jeff



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net