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?