如果需要,如何在任何具有剪裁的数字类型之间安全地转换?

时间:2013-01-31 16:13:25

标签: c++

我想要以下形式的功能

template <typename T, typename U>
U clipAndCast(T x)
{
  ... 
  return y;  
 }, 

其中y是x强制转换为U型,但如果需要,则剪裁x,以便明确定义此强制转换。

是否有库或升级功能吗?我找不到一个,所以如果没有找到这样一个函数的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

这样做的方法是测试进入的值是否大于或等于外出类型的最小值,小于或等于外出类型的最大值。您可以使用std::numeric_limits<U>::min()std::numeric_limits<U>::max()来获取最小值和最大值。

答案 1 :(得分:1)