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