On Friday, 23 June 2017 at 10:46:11 UTC, Moinak Bhattacharyya wrote:
Is there an annotation that declares a function compile-time only? I'm attempting to use a mixin string generating function that uses standard druntime imports, but I'm working in a no-stdlib environment. I never need to use this function at runtime (as is the case, I imagine, with a great many of mixin string generating functions) so is there a way I can omit it?

There is no such annotation.
However what you can do is to put your function into a function literal and enclose it with if (__ctfe)

which would look like this

string GenString(bla, blubb)
{
  if (__ctfe) {
    auto functionBody = () {
     // .... your body with imports and all
    }
    return functionBody(bla, blubb);
  }
  else
  {
    assert(0);
  }
}

this should hopefully keep the compile-time code out of your executable. It is even more effective if you use a immediately invoked function literal directly inside the mixin. which will also cause the symbol for the function to invisible and therefore not generated.

Reply via email to