On Tue, May 30, 2023 at 01:24:46AM +0000, John Xu via Digitalmars-d-learn wrote: > On Monday, 29 May 2023 at 11:21:11 UTC, Adam D Ruppe wrote: > > On Monday, 29 May 2023 at 09:35:11 UTC, John Xu wrote: > > > Error: variable `column` cannot be read at compile time > > > > you should generally getMember on a variable > > > > T t; > > __traits(getMember, t, "name") > > > > like that, that's as if you wrote t.name > > It seems I can't use variable as member name: > > struct T {int a; string name;} > T t; > string s = "name"; > writeln(__traits(getMember, t, s)); > > Above code fails to compile. Any help?
Short answer: `s` must be known at compile-time. Or more precisely, known at the time of template expansion. In this case, use `enum`: enum s = "name"; Long answer: https://wiki.dlang.org/Compile-time_vs._compile-time T -- Which is worse: ignorance or apathy? Who knows? Who cares? -- Erich Schubert