For more complex cases timely destruction will not be assured.
Which is not-so-good. We'd like timely destruction *always*
However, given that your suggestion can be implemented purely through compile time behaviors, there's no reason we can't use what you've suggested for the simple case, and some *other* solution for more complex cases.
I think that you will run into the halting problem here... Without ref counting or running dod frequently I am not sure that you can guarantee timely destruction, in complex cases...
Matt