The static_cast route caused it to compile streaming into a vector but actually generated code that would fail at runtime. This new version won't compile when the left hand is a vector.