DSP module "latency traits"

To get the overall latency that is introduced by a processor chain, something like “latency traits” (I’m open for better naming suggestions!) would be a great thing. Sketch:

namespace juce::dsp
{

template <class Processor>
struct CanIntroduceLatency : std::false_type {};

// specialisations for all processors that actually do introduce latency, e.g.
template<typename SampleType>
struct CanIntroduceLatency<Oversampling<SampleType>> : std::true_type {};
struct CanIntroduceLatency<Convolution> : std::true_type {};

// a getLatencyInSamples function
template <class Processor>
std::enable_if_t<CanIntroduceLatency<Processor>::value, double> getLatencyInSamples (const Processor& p)
{
    // this would require that all JUCE dsp processors would have a function with this name. The Convolution e.g. has getLatency, but unifying this would be great anyway
    return static_cast<double> (p.getLatencyInSamples());
}

template <class Processor>
std::enable_if_t<! CanIntroduceLatency<Processor>::value, double> getLatencyInSamples (const Processor& p)
{
    return 0.0;
}

With that, it should be easy to also implement dsp::ProcessorChain::getLatencyInSamples which could then simply call the getLatencyInSamples function above for each processor and sum up the return values. What do you think about that?