Re: Does is(f == function) work?

2021-03-09 Thread Andrey Zherikov via Digitalmars-d-learn

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?

2021-03-09 Thread Boris Carvajal via Digitalmars-d-learn

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?

2021-03-09 Thread Kyle Ingraham via Digitalmars-d-learn

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?

2021-03-09 Thread Adam D. Ruppe via Digitalmars-d-learn

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?

2021-03-09 Thread Andrey Zherikov via Digitalmars-d-learn

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?

2021-03-08 Thread Adam D. Ruppe via Digitalmars-d-learn

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