I'm trying to use a property member of a struct as a template alias parameter and I don't really understand how to fix the error message I'm seeing (I also tried the simpler case of a plain struct member, and that didn't work either). Is what I'm trying to do possible? It seems like maybe I'd have to pass s as a runtime parameter to get it to work?

```
import std.stdio;

struct S{
    int a = 1;
    int b = 2;

    @property int c(){ return a; }
    @property int c(int newc) { a = newc; return a;}
}       

void func(alias field)(){
        writeln(field);
        field = 5;
}
void main(){
    S s;
    func!(s.a)();
    func!(s.b)();

    func!(s.c)();
}
```
Runnable link here: https://run.dlang.io/is/WHM1Er

Errors:
```
onlineapp.d(17): Error: need `this` for `func` of type `@safe void()` onlineapp.d(18): Error: need `this` for `func` of type `@safe void()` onlineapp.d(12): Error: need `this` for `c` of type `@property int()` onlineapp.d(13): Error: need `this` for `c` of type `@property int(int newc)` onlineapp.d(20): Error: template instance `onlineapp.func!(c)` error instantiating
```

Reply via email to