我正在编写一个函数void func(K const& val)
,它是模板类的一部分。
假设我将一个类对象定义为foo<unsigned short int> f;
,然后我将 func 称为f.func(999999);
发生的情况是该值999999
被转换为其他值,因为它本身超出了范围。我该如何防止这种情况发生?代码中是否有编译器标志或其他方式可以防止这种情况发生?
检查
if(val > std::numeric_limits<K>::max())
内部func
没有帮助,因为该值在传递时已经转换为数值限制内的值。
例如,999998989898988989999 被转换为 11823
如何将大于 std::numeric_limits::max() 的值传递给函数?
PS 我正在使用 gcc 编译(使用 -std=c++11)