If I change formattedRead's input signature to: uint formattedRead(R, Char, S...)(ref R r, const(Char)[] fmt, ref S args) and adjusted code accordingly.
It seems to work fine. see implementation here: https://github.com/timotheecour/dtools/blob/master/dtools/overrides/format.d#L29 (just run unittests: rdmd --main -unittest dtools/all.d) why is std.format. formattedRead taking by pointer instead ? could we change that (with proper deprecation), or add that function?