Ambiguous method from inheritance when using a CRTP pattern
问题 I am defining a DoubleWrapper class inheriting from two CRTP base classes, Ratioable and Divable , that both define operator/() , with different signatures: T operator/(double const& scalar) const { return T(this->underlying().get() / scalar); } double operator/(T const& other) const { return this->underlying().get() / other.get(); } They differ both by return type and parameter type. However compiler is complaining about operator/() being ambiguous. Note that the constructor is explicit so