在constexpr模板函数中的类型转换有问题

时间:2017-03-25 19:47:49

标签: c++ templates constexpr

我有一个constexpr模板函数,它将弧度转换为度数,以及一个将度数转换为弧度的类似函数。但是,当一个float进入函数时,我得到一个错误,因为转换说我无法将const float转换为float。我通过创建一个不同的函数重载来接受const float作为参数来解决这个问题。有没有办法让函数适用于这两种类型,同时仍然保持将多种变量类型插入函数的能力?

template<typename T> constexpr float radToDeg(const T& rad)
{
    return reinterpret_cast<float>(rad) * static_cast<float>(180.f / PI);
}

constexpr float radToDeg(const float& rad)
{
    return rad * static_cast<float>(180.f / PI);
}

1 个答案:

答案 0 :(得分:0)

这不是reinterpret_cast的用途。

template<typename T> constexpr float radToDeg(const T& rad) { return static_cast<float>(rad) * static_cast<float>(180.f / PI); }