Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
March 09, 2021 Does is(f == function) work? | ||||
---|---|---|---|---|
| ||||
What am I doing wrong? void f() {} writeln(typeof(f).stringof); // prints "void()" writeln(is(f == function)); // prints "false" |
March 09, 2021 Re: Does is(f == function) work? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey Zherikov | On Tuesday, 9 March 2021 at 02:50:11 UTC, Andrey Zherikov wrote:
> writeln(is(f == function)); // prints "false"
try
is(typeof(f) == function)
it is kinda weird but that's the trick
|
March 09, 2021 Re: Does is(f == function) work? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Tuesday, 9 March 2021 at 02:57:46 UTC, Adam D. Ruppe wrote:
> try
>
> is(typeof(f) == function)
>
> it is kinda weird but that's the trick
Thanks!
Should it work for in this case as well?
alias f = (){};
writeln(typeof(f).stringof); // prints "void function() pure nothrow @nogc @safe"
writeln(is(typeof(f) == function)); // prints "false"
|
March 09, 2021 Re: Does is(f == function) work? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey Zherikov | On Tuesday, 9 March 2021 at 11:58:45 UTC, Andrey Zherikov wrote:
> Should it work for in this case as well?
>
> alias f = (){};
I actually don't know. The docs do say that function pointers work differently - they match `is(typeof(f) == return)` but it isn't clear if it would match == function.
You'd certainly think it would... but idk.
|
March 09, 2021 Re: Does is(f == function) work? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey Zherikov | On Tuesday, 9 March 2021 at 11:58:45 UTC, Andrey Zherikov wrote: > On Tuesday, 9 March 2021 at 02:57:46 UTC, Adam D. Ruppe wrote: >> try >> >> is(typeof(f) == function) >> >> it is kinda weird but that's the trick > > Thanks! > Should it work for in this case as well? > > alias f = (){}; > > writeln(typeof(f).stringof); // prints "void function() pure nothrow @nogc @safe" > > writeln(is(typeof(f) == function)); // prints "false" Does Unqual help here?: https://dlang.org/phobos/std_traits.html#Unqual |
March 09, 2021 Re: Does is(f == function) work? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey Zherikov | On Tuesday, 9 March 2021 at 11:58:45 UTC, Andrey Zherikov wrote:
> On Tuesday, 9 March 2021 at 02:57:46 UTC, Adam D. Ruppe wrote:
>> try
>>
>> is(typeof(f) == function)
>>
>> it is kinda weird but that's the trick
>
> Thanks!
> Should it work for in this case as well?
>
> alias f = (){};
>
> writeln(typeof(f).stringof); // prints "void function() pure nothrow @nogc @safe"
>
> writeln(is(typeof(f) == function)); // prints "false"
Not quite straightforward, but "void function()" is actually a pointer to function, you need to dereference it first:
is(typeof(*f) == function)
|
March 10, 2021 Re: Does is(f == function) work? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Boris Carvajal | On Tuesday, 9 March 2021 at 18:53:06 UTC, Boris Carvajal wrote:
> On Tuesday, 9 March 2021 at 11:58:45 UTC, Andrey Zherikov wrote:
>> On Tuesday, 9 March 2021 at 02:57:46 UTC, Adam D. Ruppe wrote:
>>> try
>>>
>>> is(typeof(f) == function)
>>>
>>> it is kinda weird but that's the trick
>>
>> Thanks!
>> Should it work for in this case as well?
>>
>> alias f = (){};
>>
>> writeln(typeof(f).stringof); // prints "void function() pure nothrow @nogc @safe"
>>
>> writeln(is(typeof(f) == function)); // prints "false"
>
> Not quite straightforward, but "void function()" is actually a pointer to function, you need to dereference it first:
>
> is(typeof(*f) == function)
That's a trick! Thank you!
|
Copyright © 1999-2021 by the D Language Foundation