0

我想要以下形式的功能

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

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

是否有库或增强功能可以做到这一点?我找不到,如果不是,那么编写这样一个函数的最佳方法是什么?

4

2 回答 2

1

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

于 2013-01-31T16:24:06.443 回答
1

看看Boost 的数值转换库。

于 2013-02-01T07:29:50.853 回答