On Wed, Oct 30, 2013 at 03:41:53PM -0700, Mike Stump wrote: > The dtors only run, after the ctors run. We mark where the ctors finish > spot, as the _start_ of the region for which we have to clean up. Really, > the cleanup has nothing to do with ctors. You can have dtors, without any > ctors, or ctors, without any dtors. > > { > decl d; > s; > } > > transforms into: > > <----- start of lifetime of the storage for d > ctor(d) > <----- start of lifetime of the fully constructed object d > s; > <----- end of lifetime of fully constructed object d > dtor(d) > <----- end of the storage of d > > CLEANUP_STMT documents when the region protected by the cleanup starts. One > want to describe that region is, the end of the ctors, if any, else after the > storage is allocated. In the above, that is the second <---- spot. > > Now, in the trees, the above is decl d; ctors; CLEANUP_STMT (s, dtors, d). > > s is the region for which the cleanups are active for. dtors is the cleanup > to perform on transfer out of that region, and d is the decl related to the > actions in dtors.
I see now. Thanks very much, Mike. Marek