Wait a sec: R is determined by dispatch in this other example however
julia> f(a::C) where {R <: Real, C <: Union{R, Complex{R}}} = println(R)
f (generic function with 1 method)
julia> f(Float64(3))
Float64
julia> f(Float32(3)+Float32(2)im)
Float32
How come having an additional keyword argument breaks this? From what I understand from here, dispatch occurs, R and C are matched against concrete types, and then keyword arguments are processed. By then, R should have a concrete type associated.
I’m probably missing something.