Hacker News new | ask | show | jobs
by towergratis 1821 days ago
The real problem is not specific to C++, memory or shared pointers, but as the author mentions later, the fact that "function parameters evaluation order is unspecified".

The problem is similar in C as well.

`printf("%d, %d", i++, i++);` will give you different results depending on the compiler.

1 comments

The situation is even worse, due to the possible interleaving of the execution of function calls.
The root cause is the same
How is it "the same"? If the evaluations of the individual arguments can't overlap, then the C example's problem still exists while the C++ example's problem doesn't. And if the order of evaluation were guaranteed but the evaluations could overlap, the C example wouldn't have a problem but the C++ example still would. To me the two problem's causes seem quite different.
Well, except that C does not have exceptions (at least not in the way that C++ does).
longjmp for the win (or loss)!
Right, it has signals and almost no one ever bothers to test for EINTR.