On Wednesday, 8 October 2014 at 20:15:51 UTC, Steven Schveighoffer wrote:
On 10/8/14 4:10 PM, Andrei Alexandrescu wrote:
On 10/8/14, 1:01 PM, Andrei Alexandrescu wrote:


That's a bummer. Can we get the compiler to remove the "if (__ctfe)"
code after semantic checking?

Or would "static if (__ctfe)" work? -- Andrei

Please don't ask me to explain why, because I still don't know. But _ctfe is a normal runtime variable :) It has been explained to me before, why it has to be a runtime variable. I think Don knows the answer.

Well, the contents of the static if expression have to be evaluated at compile time, so static if (__ctfe) would always be true.

Also, if it were to somehow work as imagined then you'd have nonsensical things like this:

static if (__ctfe) class Wat {}
auto foo() {
  static if (__ctfe) return new Wat();
  return null;
}
static wat = foo();

wat now has a type at runtime that only exists at compile time.

Reply via email to