auto+decltype
Posted 阿龙亡命天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了auto+decltype相关的知识,希望对你有一定的参考价值。
auto:占位符而已,在编译阶段,编译器会用推导出的类型,替换之。
auto来源于C语言中的cauto,auto register static extern类型修饰符
也可以做函数类型
typedef void (*FUNC)();
void func()
cout<<"func()"<<endl;
auto pf=func;//FUNC pf=func;
pf();
->调用func函数
也可以推到函数参数类型(C++11不行,但是C++14可以…)
auto这里推导的是:vector<double>::iterator(这是原始的)
- decltype(declare type)
输出:
4:4
6 //推导出来的类型是字符数组const char[5]
24
4 //推导出来是字符指针
decltype中的参数类型推导出 变量的类型
void func()
typedef void (*FUNC)();
FUNC fu;
decltype(fu) f = func;
f();
只能对变量来推 不能对类型来推 比如:int func等,func是函数名
- decltype+typedef
装逼的写法(威力无穷):
可以把很长的类型推导,然后用typedef替换
- 和模板结合
尾推导:
事先推导出a+b返回啥类型
以上是关于auto+decltype的主要内容,如果未能解决你的问题,请参考以下文章