为什么数组的类型推导优先考虑指向第一个的指针而不是对数组的引用?

2024-03-29

int v[1];
auto  p1 = v;
auto &p2 = v;
auto *p3 = v;

p1属于类型int *(同样适用于p3)。特别是在这个微不足道的样本中,我发现p2 ( int (&)[1])更有用,因为它固有的数组语义,例如我可以申请sizeof on p2给予与sizeof on v.

有这方面的标准报价吗?

为什么默认引用是一个坏主意? (对于这个数组的情况,我的意思是,现在几乎没有 C++ 程序员关心它们......)


auto推导出非引用类型。

auto&推导出一个参考。

auto const&推导出一个const参考。

auto&&推导出一个参考,一个const引用,或右值引用。

这就像调用时的类型推导一样template功能有效。

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

T will never由 be 引用类型推导——推导时它始终是值类型。

auto遵循几乎相同的规则:

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

是众所周知的“通用引用”,类似于类型变量auto&&.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么数组的类型推导优先考虑指向第一个的指针而不是对数组的引用? 的相关文章

随机推荐

  • 当我访问数组的元素时,硬件级别会发生什么?

    int arr 69 1 12 10 20 113 当我这样做时会发生什么 int x a 3 我一直有这样的印象a 3 意思是这样的 从内存地址开始arr 向前走 3 个内存地址 获取该内存地址表示的整数 但后来我对哈希表的工作原理感到困
  • 从视图模型将焦点设置在 WPF 中的 TextBox 上

    我有一个TextBox and a Button在我看来 现在 我正在检查按钮单击时的条件 如果条件结果为假 则向用户显示消息 然后我必须将光标设置到TextBox控制 if companyref null var cs new Lippe
  • 如何使用 Spring Boot 加载外部配置?

    我目前正在学习如何使用 Spring Boot 到目前为止我从未使用过像Spring这样的框架 而是直接使用文件 FileInputStream等 情况如下 我有一些动态配置值 例如 OAuth 令牌 我想在我的应用程序中使用它们 但我不知
  • Android 中如何使用 MVP 模式控制 ListView

    我目前正在使用 MVP 模式开发 Android 应用程序 当我尝试开发 Activity 时 我应该使用 ListView 所以我对 ListView 使用适配器 但我听说 Adapter 与 MVP 模式上的 Presenter 类似
  • 我们可以用jquery调用智能手机原生的分享功能吗?

    我们可以使用手机 android Iphone 本机共享功能来共享应用程序中的不同内容 是否也可以在所有智能手机中使用 JavaScript 通过浏览器调用此共享功能 这样 在浏览器中的某些事件中 我们可以加载共享小部件 Thanks 是的
  • 使用 shell 删除最旧的文件

    我有一个文件夹 var backup 其中 cronjob 保存数据库 文件系统的备份 它包含一个latest gz zip和许多旧的转储 它们的名称是timestamp gz zip 该文件夹变得越来越大 我想创建一个执行以下操作的 ba
  • Imagecreatefromjpeg 调整大小后返回黑色图像

    我有一个脚本来调整上传图像的大小 但是当我使用它时 它只返回一个黑色方块 所有的错误信息都指向这个函数 function resizeImage image width height scale newImageWidth ceil wid
  • 在 C++ 中检索 std::map 的随机关键元素

    如何在 C 中获取 std map 的随机密钥 使用迭代器 我不想维护额外的数据结构 std map迭代器是双向的 这意味着选择一个随机密钥将是O n 在不使用其他数据结构的情况下 基本上你唯一的选择就是使用std advance随机增量b
  • 无法在 OS X 上安装 netCDF4 python 包

    我正在尝试在 OS X 上安装 netCDF4pip install netCDF4我收到以下错误 usr local bin pip run on Wed Aug 7 23 02 37 2013 Downloading unpacking
  • .Net Core 3 和 EF Core 3 包含问题 (JsonException)

    我正在尝试使用 NET Core 3 和 EF Core 开发应用程序 我遇到了一个错误 但找不到解决方案 我无法在 Net Core 3 上做一个可以用 PHP eloquent 简单创建的结构 Model public NDEntity
  • 输入 if AND else 语句?

    所以我得到了这段代码 更新了解决方案 Override public View getView int position View convertView ViewGroup parent final Direction d directi
  • 公式提供属性默认值的最佳方式是什么?

    Chef 有一个非常详尽 也许太多 的食谱方案来提供属性的默认值 我认为 Puppet 对类参数做了类似的事情 默认值通常进入params pp 有了盐 我就看到了 在字典 支柱查找中指定默认值 the grains filter by将默
  • Hive 安装问题:Hive Metastore 数据库未初始化

    我尝试在树莓派 2 上安装 Hive 我通过解压缩压缩的 Hive 包安装 Hive 并在我创建的 hduser 用户组下手动配置 HADOOP HOME 和 HIVE HOME 运行 hive 时 出现以下错误消息 蜂巢 错误 Statu
  • 如何将文本环绕在右下角的 div 周围?

    每次我尝试用 CSS 做一些看似简单的事情时 它都不起作用 我有一个包含 460x160 图像的内容 div 我想要做的就是将图像放置在右下角 并将文本环绕在其周围 div img src text text text text text
  • 检查Tensorflow是否在GPU上运行

    I have read many questions and guides on how to understand if Tensorflow is running on GPU but I am still quite confused
  • 现代 x86 CPU 使用什么缓存一致性解决方案?

    我对缓存一致性系统在现代多核 CPU 中的功能有些困惑 我已经看到基于侦听的协议 例如基于 MESIF MOESI 侦听的协议 已在 Intel 和 AMD 处理器中使用 另一方面 基于目录的协议对于多核来说似乎更加高效 因为它们不广播而是
  • Objective-C va_list 和选择器

    是否可以使用 selector and performSelector 或类似 使用变量参数列表的方法 我正在编写一个可以分配委托来覆盖默认行为的类 在存在委托选择方法的情况下 对该类的实例进行的调用将被转发到相同的相应委托方法 其中一些方
  • javax.security.auth.login.LoginException:安全异常

    我正在尝试使用 GlassFish v3 1 2 和 JSF 2 1 以及 primeFaces 3 4 2 设置容器管理的安全性 值 HexValue 与数据库匹配 但出现以下异常 我尝试了 Base64 编码器 但结果相同 计算出的值和
  • 程序启动时随机键入后,main.m 第 14 行中的 EXE BAD ACCESS 出现错误?

    当我在 Xcode 4 1 和 iOS SDK 4 3 中的全新基于视图的应用程序项目中通过键盘随机键入时 出现了这个奇怪的崩溃 EXE BAD ACCESS 错误 当我创建基于视图的应用程序项目后按运行时 出现一个空白屏幕 当我开始按键盘
  • 为什么数组的类型推导优先考虑指向第一个的指针而不是对数组的引用?

    int v 1 auto p1 v auto p2 v auto p3 v p1属于类型int 同样适用于p3 特别是在这个微不足道的样本中 我发现p2 int 1 更有用 因为它固有的数组语义 例如我可以申请sizeof on p2给予与