digitalmars.D.learn - Why this compiles?
- Antonio (16/16) Nov 26 2023 In this example, ```a``` and ```b``` vars are not of the same
- Adam D Ruppe (3/6) Nov 26 2023 They're both subclasses of Object and inherit a generic opEquals
In this example, ```a``` and ```b``` vars are not of the same type and don't implement the same interface. **why ```assert(a==b)``` compiles?** ```d interface IOpt(T) { bool opEquals(const IOpt!T) const safe pure; } class None(T) : IOpt!T { bool opEquals(const IOpt!T other) const safe pure => true; } void main() { auto a = new None!int(); auto b = new None!string(); assert(a==b); } ```
Nov 26 2023
On Sunday, 26 November 2023 at 21:45:21 UTC, Antonio wrote:In this example, ```a``` and ```b``` vars are not of the same type and don't implement the same interface. **why ```assert(a==b)``` compiles?**They're both subclasses of Object and inherit a generic opEquals from that base.
Nov 26 2023