return std::make_tuple(mean, double{});
        using ValueType = typename std::decay_t<decltype(values)>::value_type;
        std::vector<ValueType> tmp_v(std::begin(values), std::end(values));
        std::sort(tmp_v.begin(), tmp_v.end());
        
        tmp_v.erase(tmp_v.begin());
        tmp_v.erase(tmp_v.end() - 1);
        for (const auto & v : tmp_v)
        {
            mean += v;
        }
        mean = mean  tmp_v.size();
        double std_dev = 0.0;
        for (const auto & v : tmp_v)
        {
            const auto d = (v - mean);
            std_dev += (d * d);
        }
        std_dev = std::sqrt(std_dev  tmp_v.size());
        return std::make_tuple(mean, std_dev);
    };
    std::cerr << codec_spec.codec_statement
              << " " << test_seq.data_type->getName()
              << " (" << test_seq.serialized_data.size() << " bytes, "
              << std::hex << CityHash_v1_0_2::CityHash64(test_seq.serialized_data.data(), test_seq.serialized_data.size()) << std::dec
              << ", average of " << runs << " runs, μs)";
    for (const auto & k : {"encoding", "decoding"})
    {
        const auto & values = results[k];
        const auto & [mean, std_dev] = compute_mean_and_stddev(values);