digitalmars.D.learn - generic function instance without call
- vit (14/14) Apr 27 2022 Hi, is it possible to get address of generic function instance
Hi, is it possible to get address of generic function instance for specified arguments without calling the function? Example: ```d auto foo(alias fn, Args...)(auto ref Args args){ ///return function/delegate type of `fn` for arguments `args` } void main(){ long x; auto fn = foo!((a, b) => true)(new int(42), x); static assert(is(typeof(fn) == bool function(int*, scope ref long) safe pure nothrow nogc )); } ```
Apr 27 2022
Fix: ```d auto fn = foo!((a, ref b) => true)(new int(42), x); ```
Apr 27 2022
On Wednesday, 27 April 2022 at 15:23:26 UTC, vit wrote:Hi, is it possible to get address of generic function instance for specified arguments without calling the function? Example: ```d auto foo(alias fn, Args...)(auto ref Args args){ ///return function/delegate type of `fn` for arguments `args` } void main(){ long x; auto fn = foo!((a, b) => true)(new int(42), x); static assert(is(typeof(fn) == bool function(int*, scope ref long) safe pure nothrow nogc )); } ```yeah sure; declare an alias that (fully) specialize the generic func and take the address using the alias Identifier.
Apr 27 2022
On Wednesday, 27 April 2022 at 16:03:32 UTC, user1234 wrote:On Wednesday, 27 April 2022 at 15:23:26 UTC, vit wrote:This work for types but not for attributes like `scope`, `return` and `auto ref`.Hi, is it possible to get address of generic function instance for specified arguments without calling the function? Example: ```d auto foo(alias fn, Args...)(auto ref Args args){ ///return function/delegate type of `fn` for arguments `args` } void main(){ long x; auto fn = foo!((a, b) => true)(new int(42), x); static assert(is(typeof(fn) == bool function(int*, scope ref long) safe pure nothrow nogc )); } ```yeah sure; declare an alias that (fully) specialize the generic func and take the address using the alias Identifier.
Apr 27 2022
On Wednesday, 27 April 2022 at 17:22:14 UTC, vit wrote:This work for types but not for attributes like `scope`, `return` and `auto ref`.Oh sorry... auto ref... I totally forgot [this old bug] [this old bug]: https://issues.dlang.org/show_bug.cgi?id=8204
Apr 27 2022