gpt4 book ai didi

c++ - 在 C++14 中使用通用 lambda 函数进行递归

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:47 24 4
gpt4 key购买 nike

我遇到了 this问题,answer 在哪里描述了有关如何使用通用 lambda 函数替换 std::function technique 的详细信息以及如何重新连接停止条件以启用返回类型推导。

基于以上内容,我创建了以下工作示例:

#include <cstdio>

void printSeq(unsigned start) {
auto recursion = [](auto&& self, const char* format, unsigned current) {
printf(format, current);
if(!current)
return static_cast<void>(printf("\n"));
else
self(self, ", %u", current - 1);
};

recursion(recursion, "%u", start);
}

int main() {
return (printSeq(15), 0);
}

我的问题是,在这种情况下使用 auto&&auto& 有什么优势?我应该在这里使用 std::move 吗?

最佳答案

auto& 只是左值。

例如,在您重构左值递归对象并将其替换为临时代理存储器之前,这并不重要。

auto&& 是无害的,意思是“我不介意这是临时文件还是什么,只是不要复制”,在这里表达得很好。 auto& 声明“不允许临时对象!”有时您希望在引用时排除临时对象,但这种情况很少见。

auto const&autoauto&& 应该是您的生计。

如果您的操作明确地是关于编写并且您可以排除代理引用,则仅使用auto&

关于c++ - 在 C++14 中使用通用 lambda 函数进行递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45000569/

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