| 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
Permalink
Reply