Re: generic function instance without call

2022-04-27 Thread user1234 via Digitalmars-d-learn

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


Re: generic function instance without call

2022-04-27 Thread vit via Digitalmars-d-learn

On Wednesday, 27 April 2022 at 16:03:32 UTC, user1234 wrote:

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.


This work for types but not for attributes like `scope`, `return` 
and `auto ref`.





Re: generic function instance without call

2022-04-27 Thread user1234 via Digitalmars-d-learn

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.


Re: generic function instance without call

2022-04-27 Thread vit via Digitalmars-d-learn

Fix:
```d
auto fn = foo!((a, ref b) => true)(new int(42), x);
```



generic function instance without call

2022-04-27 Thread vit via Digitalmars-d-learn
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 ));

}

```