
On Tue, Apr 5, 2011 at 7:37 AM, Dave Abrahams <dave@boostpro.com> 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! - Jeff