On Wednesday, 30 January 2019 at 01:02:37 UTC, Jonathan M Davis
wrote:
Yeah. It would be like trying to do something like
alias x = this.x;
As it stands, I believe that super is always either used as a
function call to the constructor or to mean the this pointer
for the base class. I don't think that it ever means the type
of the base class - just like this never means the type of the
current class or struct. And their usage is pretty much
identical. They're both either used for calling a constructor
or for accessing the pointer/reference of the object. It's just
that one of them is for the current class or struct, whereas
the other is for a base class of the current class. The only
difference in syntax that I can think of between them at the
moment is that this is also used to name constructors when
they're declared, whereas super is not used in that sort of way
(since any constructor that would be referenced by super would
be declared with this, not super).
- Jonathan M Davis
Current, you *can* use `super` to mean the type of the base
class, but it's been deprecated in a recent release (IIRC):
class Super
{
}
class Sub
{
super test()
{
return new Super();
}
}
void main()
{
(new Sub()).test();
}
From DPaste:
Up to 2.080.1: Success and no output
Since 2.081.2: Success with output: onlineapp.d(7):
Deprecation: Using `super` as a type is deprecated. Use
`typeof(super)` instead