Andrei, to quote you :
"[...]at least in v1.0 we're considering having the callER do the increment and the callEE do the decrement. This is how D currently handles copy construction and destruction, and it turns out it has a number of advantages over C++ (where the caller does all the work)."

Can you explain how C++ and D destructor management differs, and what are the rationale behind these differences ?