On Wednesday, 21 October 2015 at 12:05:27 UTC, Shriramana Sharma
wrote:
import std.math;
real round(real val, int prec)
{
real pow = 10 ^^ prec;
return round(val * pow) / pow;
}
Trying to compile this I get:
foo.d(5): Error: function foo.round (real val, int prec) is not
callable using argument types (real)
When I've imported std.math which contains round(real), why is
the compiler complaining about not being able to call the
overload function defined in *this* module?
I don't see anything in http://dlang.org/module.html that says
I cannot define an overload of an imported function. Did I miss
something?
My guess is that <filename>.round shadows math.round. But you can
get desired behavior
by moving declaration of math.round inside scope of
<filename>.round. This compiles:
real round(real val, int prec)
{
import std.math;
real pow = 10 ^^ prec;
return round(val * pow) / pow;
}