On Monday, 31 August 2020 at 20:44:16 UTC, Adam D. Ruppe wrote:
On Monday, 31 August 2020 at 20:39:10 UTC, Andrey Zherikov wrote:
How can I do that?

You can use a normal string[] BUT it is only allowed to be modified inside its own function.

Then you assign that function to an enum or whatever.


string[] ctGenerate() {
   string[] list;
   list ~= "stuff";
   return list;
}

enum list = ctGenerate();


That's all allowed. But CTFE is now allowed to read or modify anything outside its own function; you can't have two separate function calls build up a shared list (unless you can somehow call them both together like `enum list = ctGenerate() ~ other_thing();`


The thing I'm trying to implement is: I have a function foo(string s)() and some "state"; this function should override this "state" (using "s" param) for all code within this function (note that code can execute other modules that can refer to the same "state"). The problem is that I need this overridden "state" to be compile-time constant to be used in mixin. Any ideas how I can do this?

Reply via email to