Subject: Re: [boost] [typeof][implementation]why not use decltype or conditional expr?
From: Larry Evans (cppljevans_at_[hidden])
Date: 2012-08-04 10:13:58
On 08/03/12 18:07, Nathan Ridge wrote:
>>>> And if decltype not available, why couldn't it use the
>>>> conditional expression method described here:
>>>> I would think that would be simpler and more portable.
>>> I don't see how it's possible to implement
>>> BOOST_TYPEOF this way.
>> On page:
>> there's this:
>> If only there were a way to get the type of an expression without
>> evaluating the expression. There is! The unique properties of the
>> conditional operator allow us to sidestep the issue entirely. The
>> ENCODED_TYPEOF macro defined below encodes the type of an expression
>> without evaluating it. Read on to see how it works.
>> IIUC, the purpose of decltype is to "get the type of an expression
>> without evaluating the expression"; hence, if the current BOOST_TYPEOF
>> can be implemented with decltype, and the above quote from foreach2.html
>> is correct, then the current BOOST_TYPEOF can be implemented with the
>> method described in the foreach2.html page.
>> Am I missing something?
> The conditional operator trick gives you an *expression* E of the
> same typeas another expression F, without evaluating F.
> Typeof/decltype gives you the *type* of an expression F. You can't
> go from the first to the second without... well typeof/decltype.
Thanks Nate. The emphasis on *expression* and *type* cleared things
up. The foreach2.html phrase:
get the type of an expression
was kinda easy to misinterpret. Only after careful examination of the
code did the actual purpose, the one you gave, become clear.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk