如何将模板函数的所有参数隐式转换为最高分辨率类型?

在我正在研究的项目中,我有一个类似于此的模板化函数,其中所有参数都应为T型

#include <iostream>

template<typename T> bool aWithinBOfC(T a, T b, T c)
{
    return std::abs(a - c) < b;
}

我遇到的问题是,如果所有参数的类型都不相同,则无法编译,但是在评估之前,应将相似的类型隐式转换为分辨率最高的类型似乎是合理的。有什么办法可以使这样的电话有效吗?

int main()
{
    double a{1.2};
    double b{1.4};
    float c{0.1f};

    std::cout << aWithinBOfC(a, b, c) << std::endl;
}