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