I'm doing a fair amount of repeatedly checking if a function compiles with __traits(compiles...), executing the function if so, erroring out if not, like this:

  static if (__traits(compiles, generateFunc1())) {
    return generateFunc1();
  } static if (__traits(compiles, generateFunc2())) {
    return generateFunc2();
  } else static assert(false);

But it seems inefficient to have to evaluate those functions twice, so I'd like to optimise this so if __traits(compiles...) succeeds, the result is cached and then used when the function is actually called. I wondered if using std.functional.memoize would help?

Reply via email to