c++ - 如果需要,我如何安全地在任何带有剪裁的数字类型之间进行转换?

标签 c++

我想要一个如下形式的函数

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/

相关文章:

C++ 命名空间和头文件

c++ - 是否可以使用自定义分配运算符来创建 STACK 对象?

c++ - QT:创建 C++ 库时出现问题

c++ - tolower() 返回一个数字而不是小写形式?

C++ socket recv函数循环

c++ - 以固定容量初始化大小为 0 的 vector<vector<double>> 的最快方法

c++ - 分配内存时出现异常

c++ - 如何在 C++ 和 R 中使用完全相同的数字格式?

c++ - boost::thread 是线程安全的吗?

C++ 从文本文件运行代码