
Daniel Frey:
TR1 states that the dtor of enable_shared_from_this is non-virtual, the trunk version violates this.
Yes. This is the least of our worries though. We need to decide on the direction we need to take. The upcoming C++ committee meeting is the last chance for a new feature to go into the working paper, and it may even be too late, depending on the LWG mood. I'm not sure yet what the best course of action is, but one reasonable course of action would be to propose sp_accept_owner (with the appropriate changes to enable_shared_from_this). An additional proposal may include the member to free function change, if we choose to pursue it. The current state of enable_shared_from_this is not in accordance with this plan. If we propose sp_accept_owner, I strongly prefer the trunk version of enable_shared_from_this to reflect the proposal, in a plain, unoptimized, "reference", doable in user space, form. Daniel, your optimization work takes us further away from this. Now is not the time to optimize; we need to be sure of the specification we're implementing, and even if we were, it pays off at the beginning to have a plain reference implementation that others can lift off as-is and include in their stdlibs. To get back to the subject, our current specification of sp_accept_owner requires the virtual destructor, a fact that had remained hidden (at least for me) because we don't have a reference implementation of the std changes we're (hypothetically) about to propose.