On Friday, 19 November 2021 at 21:09:16 UTC, Ali Çehreli wrote:
I am not sure that's correct. The way I picture it, the code reaches the __vptr by following a pointer; so it's already known. Additionally, I am under the impression that there is only one __vptr for a given type, which all class objects of that type point to.
I think this is true for an object instance. But from an interface instance, the object instance must be accessible somewhere? This is also how I would read the doc:
The vtbl[0] entry is a pointer to the corresponding instance of the object.Interface class.
On the other hand, I don't know what the debugger is really showing here - it's printed as void* array and I wonder where it gets the length of the array.