On Thursday, 1 September 2016 at 21:48:41 UTC, Rory McGuire wrote:
I was hoping that the error was coming from the CTFE engine as it ran the code, but it comes up before ctfe execution I guess.


As a general comment, there is no such thing as a CTFE phase. It is performed in-line with other semantic analysis as required.

__traits(compiles, _some_function_that_calls_), thinks that the invalid code compiles even when it doesn't compile […]

No, you are missing the point. This:

---
void foo() {
  @#$!
}
---

will always cause a compiler error, regardless of whether there is a `__traits(compiles, foo())` somewhere else in the module. __traits(compiles, …) only applies to its argument and doesn't magically cause errors in code somewhere else to be ignored.

 — David

Reply via email to