Example code:
```d
module app;
import std;
void main() {
auto x = new Derived(10, 20);
}
struct Base {
int a;
}
struct Derived
{
Base base;
int b;
alias this = base;
@disable this();
// `a` is not available for use with constructor parameters.
//
this( typeof(a) _a, typeof(b) _b ) {
//
// inside the body of the constructor, `a` is available!
//
a = _a;
b = _b;
writeln( a, ", ", b );
}
}
```
Error:
`Error: undefined identifier a`
Problem:
The compiler can't find the symbol `a` in the constructor parameters, although the symbol was "imported" into the struct scope by using `alias this = base;`.
Comment #1 by timon.gehr — 2024-01-27T02:44:36Z
This works with `-preview=fixAliasThis`. Maybe we can close this as WORKSFORME?
Comment #2 by codedan — 2024-01-30T06:38:50Z
(In reply to timon.gehr from comment #1)
> This works with `-preview=fixAliasThis`. Maybe we can close this as
> WORKSFORME?
Thanks, that works!
Will the preview get included into regular D in the near feature?
„WorksForMeOnly“ is not so good if you want to make a public D package. ;)
Comment #3 by robert.schadek — 2024-12-13T19:32:41Z