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;
上一篇: epoll的简单实现