我想要一个如下形式的函数
template <typename T, typename U>
U clipAndCast(T x)
{
...
return y;
},
其中 y 是 x 转换为类型 U,但如果需要,x 被剪裁,以便此转换是明确定义的。
是否有库或增强功能可以做到这一点?我找不到,如果找不到,编写这样一个函数的最佳方法是什么?
最佳答案
方法是测试进来的值是否大于等于出去的类型的最小值,小于等于出去的类型的最大值。您可以使用 std::numeric_limits<U>::min()
和 std::numeric_limits<U>::max()
获取最小值和最大值。
关于c++ - 如果需要,我如何安全地在任何带有剪裁的数字类型之间进行转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630182/