Declaring a pointer to a function returning a ref

John Colvin john.loughran.colvin at gmail.com
Tue Jul 31 21:37:39 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`
>   }

alias RefFuncT = ref int function(return ref int a);

or

alias RefFuncT = typeof(&foo);

then

RefFuncT xpb = &bar;

or you can skip that and do

typeof(&bar) xpb = &bar;


P.S. next time this sort of question would be more appropriate in 
the the Learn forum


More information about the Digitalmars-d mailing list