The function template void foo(A)(A a, real b) { ... } is matched by foo(1, 1.0L); but not by foo(1, 1.0); since the second argument is a double literal. I think the latter should also work, since it would work for a non-templated function. Don't you agree? :) I am using D1, by the way. Is it the same in D2? -Lars