I came acros the following rule N4296::12.7/4 [class.cdtor]
:
If the virtual function call uses an explicit class member access (5.2.5) and the object expression refers to the complete object of x or one of that object’s base class subobjects but not x or one of its base class subobjects, the behavior is undefined.
What does that mean? Couldn't you give an explanation of it with an example? It's a little bit hard to imagine that for me.
In case you still want to know, this refers to when you are in the destructor of a base class and you refer to things of the the whole object that have already been destroyed. An example:
AFAIK, everything in that code is legal except accessing
der.value
in the destructor ofBase
because when you are destroyingBase
you've already destroyed theDerived
you kept a reference of inder