从变量类型开始并定义相应的最大可用类型,如何在C ++中做到这一点?

时间:2019-07-02 22:54:55

标签: c++ metaprogramming

我目前有一个模板,可以进行一些计算,但是当前存在一个乘法运算。

输入可以是有符号整数,无符号整数或浮点数。我想做的就是根据模板参数T将模板参数转换为相应的最大可用类型(即int64_t,uint64_t,double)。

template<typename T>
T scale(T value, T position, T count)
{
    return (value * position) / count;
}

Tint16_t并有如下呼叫时:

int16_t result(scale(15'000, 3'000, 5'000));

返回无效数字,因为乘法(15'000 * 3'000)大于T可以容纳的数字。

我希望能够做这样的事情:

    return (static_cast<largest<T>::type>(value)
                     * static_cast<largest<T>::tyoe>(position))
                                 / static_cast<largest<T>::type>(count);

其中largest<T>::type返回相同符号的最大可用类型(整数)或double(浮点数)。

0 个答案:

没有答案