[Issue 21094] New: [REG2.078] Array equality for struct with class member and opCast and alias this
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Jul 30 11:03:45 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=21094
Issue ID: 21094
Summary: [REG2.078] Array equality for struct with class member
and opCast and alias this
Product: D
Version: D2
Hardware: x86
OS: Mac OS X
Status: NEW
Severity: enhancement
Priority: P1
Component: druntime
Assignee: nobody at puremagic.com
Reporter: johanengelen at weka.io
This testcase does not compile since 2.078:
```
class C {
int a;
}
struct S {
bool isValid;
C fib;
inout(C) get() pure @safe @nogc nothrow inout {
return isValid ? fib : C.init;
}
T opCast(T : C)() const { return null; }
alias get this;
}
auto foo(S[] lhs, S[] rhs) {
return lhs == rhs;
}
```
The error:
/druntime/src/core/internal/array/equality.d(101): Error: template instance
`opCast!(Object)` does not match template declaration `opCast(T : C)()`
/druntime/src/core/internal/array/equality.d(101): Error: template instance
`opCast!(Object)` does not match template declaration `opCast(T : C)()`
/druntime/src/core/internal/array/equality.d(102): Error: template instance
`opCast!bool` does not match template declaration `opCast(T : C)()`
/druntime/src/core/internal/array/equality.d(102): Error: template instance
`opCast!(Object)` does not match template declaration `opCast(T : C)()`
weka/lib/comparison.d(38): Error: template instance
`core.internal.array.equality.__equals!(S, S)` error instantiating
It appears to be fixed by https://github.com/dlang/druntime/pull/3142 , but
please add this extra testcase. Thanks.
--
More information about the Digitalmars-d-bugs
mailing list