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(这是原始的)

  1. 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是函数名

  1. decltype+typedef
    装逼的写法(威力无穷):
    可以把很长的类型推导,然后用typedef替换
  2. 和模板结合

    尾推导:

    事先推导出a+b返回啥类型

以上是关于auto+decltype的主要内容,如果未能解决你的问题,请参考以下文章

c++11/14 auto 与 decltype

auto+decltype

C++学习笔记——auto/decltype 自动推导类型

C++学习笔记——auto/decltype 自动推导类型

C++学习笔记——auto/decltype 自动推导类型

C++学习笔记——auto/decltype 自动推导类型