On 21 Jul 2014 22:10, "Artur Skawina via Digitalmars-d" < digitalmars-d@puremagic.com> wrote: > > On 07/21/14 21:53, via Digitalmars-d wrote: > > On Monday, 21 July 2014 at 19:33:32 UTC, Artur Skawina via Digitalmars-d wrote: > >> Disallowing integer overflow just at CT is not (sanely) possible > >> in a language with D's CTFE capabilities. (Would result in code > >> that compiles and works at runtime, but is not ctfe-able) > > > > I'd like to see compile time _constants_ be unbounded rational numbers with explicit truncation. It is when you assign it to an in-memory location that you need to worry about bounds. The same goes for calculations that doesn't do division. > > > > No need to copy the bad parts of C. > > Actually, C/C++ could get away with treating overflow during constant > folding as an error (or at least emitting a warning) because of the > lack of CTFE (and no templates in C's case). The code will either > compile or it won't. > For D that is not possible -- if an expression is valid at run-time > then it should be valid at compile-time (and obviously yield the same > value).
...most of the time. CTFE is allowed to do things at an arbitrary precision in mid-flight when evaluating an expression. Iain