digitalmars.D.learn - stringof alias
- JS (11/11) Jul 19 2013 I have a template
- John Colvin (4/15) Jul 19 2013 that error is probably related to what you're passing as t, which
- JS (8/27) Jul 19 2013 Yeah, I forgot to add a private local variable and it was
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (25/42) Jul 19 2013 I read everything you wrote and came up with this:
I have a template template T(alias t) { pragma(msg, t.stringof); .... other stuff ... } which I use in a class and pass fields/members to. D complains that t does not have a this. I'd just like to print the literal text that was passed to T. (which I actually do in ctfe) This is so I can have some sort of debug output of what was passed to t.
Jul 19 2013
On Friday, 19 July 2013 at 08:02:45 UTC, JS wrote:I have a template template T(alias t) { pragma(msg, t.stringof); .... other stuff ... } which I use in a class and pass fields/members to. D complains that t does not have a this. I'd just like to print the literal text that was passed to T. (which I actually do in ctfe) This is so I can have some sort of debug output of what was passed to t.that error is probably related to what you're passing as t, which leads to the obvious question: what sort of things are you passing as t?
Jul 19 2013
On Friday, 19 July 2013 at 08:08:27 UTC, John Colvin wrote:On Friday, 19 July 2013 at 08:02:45 UTC, JS wrote:Yeah, I forgot to add a private local variable and it was complaining... I didn't realize this because it was working before I started refactoring stuff. I guess it would be nice to assert a proper error if t doesn't exist rather than the error it gave. (I'm suppose to be passing it a field of a class so it should exist) Is there any way to test for "existance" of an alias?I have a template template T(alias t) { pragma(msg, t.stringof); .... other stuff ... } which I use in a class and pass fields/members to. D complains that t does not have a this. I'd just like to print the literal text that was passed to T. (which I actually do in ctfe) This is so I can have some sort of debug output of what was passed to t.that error is probably related to what you're passing as t, which leads to the obvious question: what sort of things are you passing as t?
Jul 19 2013
On 07/19/2013 02:02 AM, JS wrote:On Friday, 19 July 2013 at 08:08:27 UTC, John Colvin wrote:I read everything you wrote and came up with this: template T(alias t) { pragma(msg, t.stringof); } class C { int i; void foo() { mixin T!i; mixin T!j; } } void main() { auto c = new C(); }On Friday, 19 July 2013 at 08:02:45 UTC, JS wrote:I have a template template T(alias t) { pragma(msg, t.stringof); .... other stuff ... } which I use in a class and pass fields/members to.Hm... It does not do that for me.D complains that t does not have a this.I guess it would be nice to assert a proper error if t doesn't exist rather than the error it gave.That is exactly what dmd does: Error: undefined identifier j, did you mean variable i?(I'm suppose to be passing it a field of a class so it should exist) Is there any way to test for "existance" of an alias?Probably. But I suspect your code is something different from what I understood. Ali
Jul 19 2013