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

Reply via email to