Skip to content

BF: Remove ambiguous Splinterpolator constructor overloads

Paul McCarthy requested to merge bf/overload-ambiguity into master

The Splinterpolator overloads can lead to ambiguities, when default arguments are used. For example, a call of the form:

Splinterpolator(NEWIMAGE::volume<float>, 
                std::vector<unsigned int>&, 
                std::vector<SPLINTERPOLATOR::ExtrapolationType>&, 
                int, 
                bool)

could match either of these overloads:

Splinterpolator(const T *data,
                const std::vector<unsigned int>& dim,
                const std::vector<ExtrapolationType>& et,
                unsigned int order=3,
                bool copy_low_order=true,
                unsigned int nthr=1,
                double prec=1e-8)

Splinterpolator(const T *data,
                const std::vector<unsigned int>& dim,
                const std::vector<ExtrapolationType>& et,
                unsigned int order=3,
                bool copy_low_order=true,
                double prec=1e-8)

I don't think there is any need for the second overload in the above example, so this MR proposes to remove both of the offending constructor overloads.

Merge request reports