Thread overview | |||||
---|---|---|---|---|---|
|
March 16, 2013 .stringof might call function? | ||||
---|---|---|---|---|
| ||||
Why is the function called in the template at the line of .stringof? template t(alias fn) { static if(fn.stringof) // f(int i) isn't callable using () enum t = true; else enum t = false; } void main() { void f(int i) {} t!f; } |
March 16, 2013 Re: .stringof might call function? | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | On Saturday, 16 March 2013 at 13:01:44 UTC, simendsjo wrote:
> Why is the function called in the template at the line of .stringof?
>
> template t(alias fn) {
> static if(fn.stringof) // f(int i) isn't callable using ()
> enum t = true;
> else
> enum t = false;
> }
>
> void main() {
> void f(int i) {}
> t!f;
> }
Seems pragma(msg, fn) also has the same behavior.
Guess this is because all functions can be called using property syntax. It really hurts my generic code though..
|
March 16, 2013 Re: .stringof might call function? | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | On 3/16/13, simendsjo <simendsjo@gmail.com> wrote:
> Why is the function called in the template at the line of .stringof?
>
> template t(alias fn) {
> static if(fn.stringof) // f(int i) isn't callable using ()
Use __traits(identifier, fn).
|
Copyright © 1999-2021 by the D Language Foundation