Boost logo

Boost :

Subject: Re: [boost] [move] new rvalue reference emulation
From: Dave Abrahams (dave_at_[hidden])
Date: 2011-04-05 11:11:02


At Tue, 5 Apr 2011 07:44:02 -0700,
Jeffrey Lee Hellrung, Jr. wrote:
>
> On Tue, Apr 5, 2011 at 7:37 AM, Dave Abrahams <dave_at_[hidden]> wrote:
>
> > At Mon, 4 Apr 2011 22:14:29 -0700,
> > Jeffrey Lee Hellrung, Jr. wrote:
> > >
> > > I also forgot to mention that (obviously) this precludes polymorphic
> > return
> > > types :( At least, I don't see how they can be supported...
> >
> > Sorry, can you show an example of what's precluded, using C++0x notation?
> >
>
> There's no way to make the return type dependent on the argument type, since
> the argument type has been erased:
>
> // C++0x, with rvalue references
> template< class T >
> typename result_of::some_fn<T>::type // result type is polymorphic; it
> depends on the argument type
> some_fn(T&& x);
>
> // C++03, with emulated "typeless" rvalue reference
> typename result_of::some_fn< /* what goes here? */ >::type // result type
> cannot depend on the argument type, since we don't know the argument type!
> some_fn(generic_rv< ???, ??? > x);
>
> Perhaps my use of the term "polymorphic" here is wrong; if so, let me know!

No, that makes perfect sense. Thanks for explaining.

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk