sách gpt4 ăn đã đi

c++ - auto 和 decltype(auto) 类型推导示例

In lại 作者:太空狗 更新时间:2023-10-29 20:08:30 31 4
mua khóa gpt4 giày nike

我读了一篇关于 tự động 类型推导的文章,使用 loại bỏ 我想知道我在下面的例子中关于如何推导类型的逻辑是否正确(所以如果我是有误请指正:)

#include 
sử dụng không gian tên std;

class Widget
{
công cộng:
Widget() = default;
};

int chính()
{
Widget w;
const Widget& cw = w; // cw is const Widget&
auto myWidget1 = cw; // (1) myWidget1 is Widget
decltype(auto) myWidget2 = cw; // (2) myWidget2 is const Widget&
}

到目前为止我的理解是:

for 1 :使用自动类型推导,在这种情况下,它类似于按值传递的参数的模板类型推导。这意味着 cv 限定符和 refs 将被忽略,这将导致 Widget 最终成为类型。

对于 2:使用 decltype,然后将其传递给 auto 真正的 cw 是一个 const Widget&,然后设置所有内容,类型为 const Widget&。

那么我写/理解的是对还是错?

Cảm ơn

câu trả lời hay nhất

这里有一个技巧,因此您可以让编译器打印一个类型:

template 
struct TD;

然后使用:

TD();

作为TD<...>是一个不完整的类型,编译器会报错,并在错误信息中打印你的类型:

error: invalid use of incomplete type struct TD

Vì thế myWidget1的类型是 Widget .

myWidget2 的类型:

error: invalid use of incomplete type struct TD

所以它的类型确实是const Widget & ,如您所料。

是的,您所描述的是正确的。

关于c++ - auto 和 decltype(auto) 类型推导示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53570664/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress