gpt4 book ai didi

c++ - C++中如何解析 `auto a(b);`?

转载 作者:行者123 更新时间:2023-12-03 03:25:48 24 4
gpt4 key购买 nike

我遇到了一行奇怪的代码,其形式如下:

// Given the following definitions:
class B;
B b;

// Line of interest:
auto a(b);

我认为这一定是一个拼写错误,但经过一些实验发现它有效,并且似乎总是调用 b 类型的复制构造函数(即使您有其他类也可以有匹配的构造函数,并且即使您还删除了 b 类型的复制构造函数)。

我不知道这样的语句的技术名称,所以我不知道如何在 cppreference 或 StackOverflow 中搜索它。编译器一般如何解析这种类型的语句,它记录在哪里?

--

回复:重复标记。我不明白他们是如何解决这个问题的。我已经知道了auto使用模板类型推导,在这种情况下没有澄清任何内容。

最佳答案

How is auto a(b); parsed in C++?

取决于b是什么。如果 b 是一种类型,那么这是一个名为 a 的函数声明,具有推导的返回类型和一个 b 类型的参数。

如果 b 不是类型,则定义一个名为 a 的变量,其类型是从初始化器推导出来的。

where is it documented?

权威文档就是标准文档。标准部分 [dcl.type.auto]、[dcl.ambig.res]、[dcl.fct]、[dcl.init] 应该是相关的。

还有一些网站以(可以说)更平易近人的方式提供文档。

这也应该包含在最近的内容中(例如,自 2011 年以来的任何内容)introductory C++ books .

and even if you additionally delete the copy constructor for the type of b

我对此表示怀疑。创建 mcve .

关于c++ - C++中如何解析 `auto a(b);`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com