Consider:
import std.range.iota;
auto r = iota(5, 0);
r
is an empty range, as it should be. But if you call:
auto r = iota(5.0, 0);
then you get an exception (incorrect startup parameters).
This was unexpected, and a pain to debug. What is the rationale behind iota having different semantics depending on whether the arguments are floats or not?
Arredondo.