博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板以及类型自动推导
阅读量:4153 次
发布时间:2019-05-25

本文共 558 字,大约阅读时间需要 1 分钟。

#include 
using namespace std;int main() { int m = 1000000000; int len = 2000000000; size_t rst = 3000000000; size_t tt = m*(len-m); cout << tt <

第10行,m*(len-m)已经超过int的范围,但是结果是size_t,所以会自动推导为size_t

第12行,对于(m*(len-m))而言,只能推导出结果是int,所以就溢出了,即使前面有一个rst是size_t也不能影响推导

template<typename InputIterator >

< InputIterator >::value_type 
 (InputIterator first, InputIterator last)

int8_t * first;

int8_t* last = first + len;

size_t rst = reduce(first, last)

如果结果大于128,那么就会出错,因为模板的输出类型和输入类型是同一种类型,在函数内部就是用的int8_t, 即使结果是size_t类型的,在传给结果之前int8_t已经溢出了

转载地址:http://yyeti.baihongyu.com/

你可能感兴趣的文章
SVG 形状学习之——SVG 矩形<rect>
查看>>
SVG 形状学习之——SVG圆形
查看>>
SVG 滤镜学习之——SVG 滤镜
查看>>
mysql中用命令行复制表结构的方法
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
让代码变得更优雅-Lombok
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
Ubuntu10.10 CAJView安装 读取nh\kdh\caj文件 成功
查看>>
kermit的安装和配置
查看>>
vim 配置
查看>>
openocd zylin
查看>>
进程创建时文件系统处理
查看>>
进程创建时信号处理函数处理
查看>>
进程创建时信号处理
查看>>
进程创建时内存描述符处理
查看>>
进程创建时命名空间处理
查看>>
进程创建时IO处理
查看>>
进程创建时线程栈处理
查看>>
进程创建时pid分配
查看>>