Re: Does is(f == function) work?
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!
Re: Does is(f == function) work?
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)
Re: Does is(f == function) work?
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
Re: Does is(f == function) work?
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.
Re: Does is(f == function) work?
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"
Re: Does is(f == function) work?
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