gpt4 book ai didi

c++ - 右值引用与 "&& &&"崩溃的示例

转载 作者:行者123 更新时间:2023-12-01 14:43:30 25 4
gpt4 key购买 nike

根据 some rules,当您拥有模板和引用时,您可以得到像 T & && 这样的类型,它们会被折叠起来。 .基本上,除了 T && && 之外的所有内容都折叠为 T& ,后者折叠为 T&&

什么是触发 && && 案例的真实示例?

我找到一个 artificial example :

template <typename T> void func(T&& a);
auto fp = func<int&&>;

但到目前为止,在我的研究中,我还没有很好地了解这个案例何时真正出现。

最佳答案

当参数类型是不受约束的 auto 时转发将是一个真实世界的例子。例如,在 lambda 中。

[](auto && arg) {
return foobar(std::forward<decltype(arg)>(arg));
}
当使用右值调用 lambda 时,

decltype(arg) 将是一些 T&&。引用折叠规则最终将在 std::forward 的实现中启动,并将 T && && 正确地转换为返回类型的 T&& .

关于c++ - 右值引用与 "&& &&"崩溃的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60071076/

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