On Monday, 6 May 2019 at 14:48:56 UTC, faissaloo wrote:
misunderstood how allocation works when instantiating a struct
that uses alias this:
alias this has no effect on allocation at all. All it does is if
x.y
doesn't compile, it rewrites it to
x.alias_this.y
(or if f(x) doesn't work, it tries f(x.alias_this) too, same idea
though.)
That's all it does; it is a way to simplify access to or through
a member.
So the allocation doesn't factor into it.
Or is base definitely part of the allocation of Child on the
heap?
It is definitely part of the Child allocation. But if you are
passing it to a function, keep in mind it still works as a struct.
void foo(Base b) {}
auto child = new Child();
foo(child);
That gets rewritten into
foo(child.base);
which is passed by value there, unlike classes where it is all
references. So that might be a source of confusion for you.