Hello everyone, I'm new here on the forum but I've been exploring D for quite a while. I'm not an expert programmer by any means, so this one may be a really silly question and, in that case, please forgive me.

With the premise that I've still not looked a lot into "complex" compile time "stuff" (whether it's templates, CTFE, compile-time constants, etc...), so that may be the reason I may be missing the point... I'm trying to understand why keywords such as "static" or "enum" are used to denote compile time "things". What I mean is that those keywords are also used for other purposes, so I find it a bit confusing. Couldn't a keyword like "ctfe" (just making it up right now) exist? So that, when seeing something like

ctfe myNumber = 5;

ctfe if (myNumber + 2 == 7)
{
  // ...
}

one could immediately understand that the code is executed/evaluated at compile time. True, after someone knows that "static" and "enum" mean (in the above example) that some compile-time things are happening, it's fine. I just find it a bit confusing not having a dedicated keyword but re-using existing ones that also serve other purposes...

Note that this is not an attack to the language or anything (I actually really love it), I'm just trying to understand the reasoning behind this choice.

Thank you very much in advance.

Reply via email to