On Friday, 28 June 2013 at 17:30:58 UTC, Ali Çehreli wrote:
On 06/28/2013 10:17 AM, Maxim Fomin wrote:
> Are you sure that the code is exact translation of
demonstrated D
> problem?
Sorry. I omitted two points.
> I see difference in argument passing order and your version
> uses try-catch block.
1) C++ does not specify whether the stack gets unwound when the
program terminates with an uncaught exception. That's why I
caught to ensure that the stack objects would be destroyed.
Doesn't it? The stack needs to be unwound for the exception to
even "escape". It's merely the globals that may not be destroyed.
(AFAIK)
2) C++ does not specify in what order function arguments are
evaluated. I swapped the parameters because I used gcc under
Linux, where the parameters are executed from right-to-left.
Ali