https://issues.dlang.org/show_bug.cgi?id=6447
--- Comment #13 from bearophile_h...@eml.cc --- I keep this issue open because this still doesn't work: void main() { import std.bigint: BigInt; import std.range: iota; iota(BigInt(1), BigInt(100), BigInt(5)); iota(BigInt(1), BigInt(100), 5); } test.d(4,9): Error: template std.range.iota cannot deduce function from argument types !()(BigInt, BigInt, BigInt), candidates are: ...\dmd2\src\phobos\std\range\package.d(4008,6): std.range.iota(B, E, S)(B begin, E end, S step) if ((isIntegral!(CommonType!(B, E)) || isPointer!(CommonType!(B, E))) && isIntegral!S) ...\dmd2\src\phobos\std\range\package.d(4098,6): std.range.iota(B, E)(B begin, E end) if (isFloatingPoint!(CommonType!(B, E))) ...\dmd2\src\phobos\std\range\package.d(4105,6): std.range.iota(B, E)(B begin, E end) if (isIntegral!(CommonType!(B, E)) || isPointer!(CommonType!(B, E))) ...\dmd2\src\phobos\std\range\package.d(4168,6): std.range.iota(E)(E end) ...\dmd2\src\phobos\std\range\package.d(4176,6): std.range.iota(B, E, S)(B begin, E end, S step) if (isFloatingPoint!(CommonType!(B, E, S))) test.d(4,9): ... (1 more, -v to show) ... test.d(5,9): Error: template std.range.iota cannot deduce function from argument types !()(BigInt, BigInt, int), candidates are: ...\dmd2\src\phobos\std\range\package.d(4008,6): std.range.iota(B, E, S)(B begin, E end, S step) if ((isIntegral!(CommonType!(B, E)) || isPointer!(CommonType!(B, E))) && isIntegral!S) ...\dmd2\src\phobos\std\range\package.d(4098,6): std.range.iota(B, E)(B begin, E end) if (isFloatingPoint!(CommonType!(B, E))) ...\dmd2\src\phobos\std\range\package.d(4105,6): std.range.iota(B, E)(B begin, E end) if (isIntegral!(CommonType!(B, E)) || isPointer!(CommonType!(B, E))) ...\dmd2\src\phobos\std\range\package.d(4168,6): std.range.iota(E)(E end) ...\dmd2\src\phobos\std\range\package.d(4176,6): std.range.iota(B, E, S)(B begin, E end, S step) if (isFloatingPoint!(CommonType!(B, E, S))) test.d(5,9): ... (1 more, -v to show) ... --