欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ auto与decltype

程序员文章站 2024-03-23 10:57:46
...

1、decltype()作用在引用上返回引用类型;
2、并且保留顶层const的语义。
3、作用在解引用运算*p上返回引用类型
4、形如decltype( (XXX) ) 永远返回引用类型
5、作用于赋值表达式上返回引用类型。decltype( a=b )

例如:

const int a = 1;
int b = 2;
int &r = b;
decltype(r) r2 = b; //r2 为 int &
decltype(a) c = 3; //c为 const int 

auto为引用推断出的类型是其绑定的对象的类型,即没有引用类型。
并且auto不保留标识符自身为顶层const的const语义。

const int a = 100;
auto b = a; // auto 为b=a推断出的类型是int 。因为b=a本身是顶层const,auto默认不会保留const
auto c = &a; //auto 为 c=&a 推断出的类型是const int* 。c=&a首先是个指针类型,并且它是底层const的,auto为其自动保留const语义

结合上引用再举几个例子

const int a = 100;

auto &r1 = a;  //推断出的类型是const int &r1。因为&r1 = a属于底层const,auto会保留const语义

const auto &r2 = 200;  //auto推断出的类型是int,又因为前面加上了const(底层),因此整体的类型是 const int &r2 = 200;
相关标签: c++