From: shunsuke (pstade.mb_at_[hidden])
Date: 2008-04-07 02:31:01
Eric Niebler wrote:
>> Let me clarify.
>> This identity implementation is simply wrong (if you pass an rvalue to identity.)
>> because of inconsistency between decltype and result_of.
>> Am I missing anything?
> I don't think so. If I have an rvalue, I compute the return type and
> invoke the function as follows:
> result_of<identity(int)>::type i = identity()(1);
> This is perfectly safe. If I have an lvalue, it looks like this:
> int const i = 0;
> result_of<identity(int const &)>::type j = identity()(i);
> Also perfectly safe.
Hmm, result_of must be consistent with decltype, IMO.
It seems not "safety" but "mathematics". :-)
How about this? :
result_of<identity(int)>::type // doh in C++0x.
-- Shunsuke Sogame
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk