On Saturday, 13 January 2018 at 19:15:49 UTC, kdevel wrote:
dmd checks the types but does not count the arguments.

so note that dmd doesn't actually do any checks here - it is all done in library code.

The implementation is amusingly simple:
https://github.com/dlang/phobos/blob/master/std/format.d#L5803

try format(...) catch(Exception) trigger compile time error.


But, since float format doesn't work at compile time, this method doesn't actually work to catch any float-related problems except mismatching format characters!

For ints, it catches all that, but for float, it just bails out of the check as soon as it actually *succeeds* - because that kills CTFE.

We should just put in a fake stub float printer to hack this past for checking purposes.

Reply via email to