
At 1:38 PM +0000 7/14/09, Alexander Nasonov wrote:
This is crazy, isn't it?
No kidding!
Q: correctly indent the following code: <see code above> A: it's impossible
For the second use, the correct indentation is:
boost::scope_exit::aux::holder< boost::scope_exit::aux::declare< sizeof(boost_scope_exit_args)
::apply < 0 ::apply_value > boost_scope_exit_args;
Yes. (I *think*. See discussion of "crazy" above.)
They're the same because void* is well aligned and there is no padding in struct apply<0> but strictly speaking, they don't have to be of equal size.
Hm. Everything involved looks like POD to me (albeit with oddly spelled names, if one is a C programmer). I think lots of code would be broken if such types could be different in size. But I admit I can't right now put together a string of text in the standard that would guarantee that they are the same size.
I like explicit specializations for declared and undeclared, though. They make reading code a little bit easier (and here "a little bit" make a big difference, given how complex the trick is).
Completely agree.
Perhaps adding BOOST_STATIC_ASSERT would be enough?
I don't see any way that could hurt. Even if not necessary, it may help guide future readers in the right direction.