Declaring a pointer to a function returning a ref
Jean-Louis Leroy
jl at leroy.nyc
Tue Jul 31 21:35:11 UTC 2018
On Tuesday, 31 July 2018 at 21:29:26 UTC, Jean-Louis Leroy wrote:
> How do I declare a variable that contains a pointer to a
> function returning a reference?
>
> import std.stdio;
>
> int foo(return ref int a)
> {
> a = 42;
> return a;
> }
>
> ref int bar(return ref int a)
> {
> a = 42;
> return a;
> }
>
> void main()
> {
> int x;
> auto apf = &foo;
> writeln(typeid(apf)); // int function(return ref int)*
> int function(return ref int) xpf = &foo;
>
> auto apb = &bar;
> writeln(typeid(apb)); // int function(return ref int) ref*
>
> // int function(return ref int) ref xpb = &bar; // Error:
> no identifier for declarator `int function(return ref int)`
> // ref int function(return ref int) xpb = &bar; // Error:
> variable `castfunc.main.xpb` only parameters or `foreach`
> declarations can be `ref`
> }
I know I could use `typeof(&bar) xpb = &bar;` but I wonder if
there is an explicit syntax.
More information about the Digitalmars-d
mailing list