我想要以下形式的功能
template <typename T, typename U>
U clipAndCast(T x)
{
...
return y;
},
其中 y 是 x 强制转换为 U 类型,但如果需要,x 会被剪裁,以便此强制转换是明确定义的。
是否有库或增强功能可以做到这一点?我找不到,如果不是,那么编写这样一个函数的最佳方法是什么?
我想要以下形式的功能
template <typename T, typename U>
U clipAndCast(T x)
{
...
return y;
},
其中 y 是 x 强制转换为 U 类型,但如果需要,x 会被剪裁,以便此强制转换是明确定义的。
是否有库或增强功能可以做到这一点?我找不到,如果不是,那么编写这样一个函数的最佳方法是什么?
方法是测试进来的值是否大于等于出去的类型的最小值,小于等于出去的类型的最大值。您可以使用std::numeric_limits<U>::min()
andstd::numeric_limits<U>::max()
来获取最小值和最大值。
看看Boost 的数值转换库。