Re: Declaring a pointer to a function returning a ref

2018-07-31 Thread John Colvin via Digitalmars-d

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 = 
writeln(typeid(apf)); // int function(return ref int)*
int function(return ref int) xpf = 

auto apb = 
writeln(typeid(apb)); // int function(return ref int) ref*

// int function(return ref int) ref xpb =  // Error: 
no identifier for declarator `int function(return ref int)`
// ref int function(return ref int) xpb =  // 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();

then

RefFuncT xpb = 

or you can skip that and do

typeof() xpb = 


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


Re: Declaring a pointer to a function returning a ref

2018-07-31 Thread Jean-Louis Leroy via Digitalmars-d

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 = 
writeln(typeid(apf)); // int function(return ref int)*
int function(return ref int) xpf = 

auto apb = 
writeln(typeid(apb)); // int function(return ref int) ref*

// int function(return ref int) ref xpb =  // Error: 
no identifier for declarator `int function(return ref int)`
// ref int function(return ref int) xpb =  // Error: 
variable `castfunc.main.xpb` only parameters or `foreach` 
declarations can be `ref`

  }


I know I could use `typeof() xpb = ` but I wonder if 
there is an explicit syntax.


Declaring a pointer to a function returning a ref

2018-07-31 Thread Jean-Louis Leroy via Digitalmars-d
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 = 
writeln(typeid(apf)); // int function(return ref int)*
int function(return ref int) xpf = 

auto apb = 
writeln(typeid(apb)); // int function(return ref int) ref*

// int function(return ref int) ref xpb =  // Error: no 
identifier for declarator `int function(return ref int)`
// ref int function(return ref int) xpb =  // Error: 
variable `castfunc.main.xpb` only parameters or `foreach` 
declarations can be `ref`

  }