Allocations with closure and mul!

If you want to reserve T for data you can just add another type parameter to operator to make prod! type-stable:

struct operator{T,F}
    prod!::F
end
operator{T}(prod!::F) where {T,F} = operator{T,F}(prod!)