Is `alias this` a mistake?

Paul Backus snarwin at gmail.com
Tue Aug 3 16:24:26 UTC 2021


On Tuesday, 3 August 2021 at 15:52:07 UTC, NonNull wrote:
> Here, further down, I just saw Walter indicate his opinion that 
> `alias this` is a mistake. Any thoughts?
>
> https://news.ycombinator.com/item?id=28029184

`alias this` is typically used to

- make a user-defined type behave like a subtype of some other 
type
- make a user-defined type implicitly convert to some other type

...but it does kind of a crappy job at both. It's very easy to 
use `alias this` in ways that violate the [Liskov substitution 
principle][1] (see for example [this thread][2]), so it fails at 
being a good subtyping mechanism. And you can only have one 
`alias this` per type, so it also fails at being a good mechanism 
for user-defined implicit conversions (compare to `opCast`, the 
mechanism for user-defined *explicit* conversion).

[1]: https://en.wikipedia.org/wiki/Liskov_substitution_principle
[2]: https://forum.dlang.org/thread/q6plhj$1l9$1@digitalmars.com


More information about the Digitalmars-d mailing list