AudioData Conversion to Int32

I am trying to interleave samples while simultaneously convert them from float to signed 32 bit integers. I have been trying to do this with the AudioData class. Here is a minimal example:

using SrcFormat = juce::AudioData::Format<juce::AudioData::Float32, juce::AudioData::NativeEndian>;
using DstFormat = juce::AudioData::Format<juce::AudioData::Int32, juce::AudioData::NativeEndian>;
    
    Test()
    {
        const int numChannels = 5;
        const int numSamples = 1024;
        
        juce::AudioBuffer<float> src(numChannels, numSamples);
        std::vector<int32_t> dst(numChannels * numSamples, 0.0f);
        
        juce::AudioData::interleaveSamples(juce::AudioData::NonInterleavedSource<SrcFormat>{src.getArrayOfReadPointers(), numChannels}, juce::AudioData::InterleavedDest<DstFormat>{dst.data(), numChannels}, 1024);
    }

The interleave function expects the destination vector to be of type unsigned 32 bit int however this is not what I specified in the DstFormat. Have I got something wrong or do I need to split up my interleaving and sample conversion?