While there might be valid cases where such method overloadings could become ambiguous, why does the compiler disallow code which is neither ambiguous at compile time nor at
What worked for me is to redefine (Java-style) the overloading methods.
def foo(a: Int, b: Int) = a + b def foo(a: Int, b: String) = a + b def foo(a: Int) = a + "42" def foo(a: String) = a + "42"
This ensures the compiler what resolution you want according to the present parameters.