c – 为什么数组的类型推导优先于指针首先引用数组?

前端之家收集整理的这篇文章主要介绍了c – 为什么数组的类型推导优先于指针首先引用数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
int v[1];
auto  p1 = v;
auto &p2 = v;
auto *p3 = v;

p1的类型为int *(对于p3是相同的).特别是在这个简单的样本中,我发现p2(int(&)[1])更有用,因为它具有特定的数组语义,例如:我可以在p2上应用sizeof,使其与v上的sizeof相同.

是否有关于此的标准报价?

为什么默认参考是一个坏主意? (对于这个数组的情况,我的意思是,这些天几乎没有c程序员关心它们……)

解决方法

auto推断出非引用类型.

汽车和放大器;推断参考.

汽车常数推导出一个const引用.

汽车和放大器;&安培;推导出引用,const引用或右值引用.

这就像调用模板函数时的类型推导一样有效.

template<typename T>
void foo( T t );

T永远不会被引用类型推断 – 它在推导时总是一个值类型.

auto遵循几乎相同的规则:

template<typename T>
void foo( T&& t );

是一个相当着名的“通用参考”,类似于auto&&的变量.

猜你在找的C&C++相关文章