
On 08/03/12 18:07, Nathan Ridge wrote: [snip]
And if decltype not available, why couldn't it use the conditional expression method described here:
http://www.artima.com/cppsource/foreach2.html
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:
http://www.artima.com/cppsource/foreach2.html
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.
Regards,Nate
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. -regards, Larry