gpt4 book ai didi

c++ - 使用 tie 从元组中分配 2 个 lambda

转载 作者:行者123 更新时间:2023-12-01 19:23:11 24 4
gpt4 key购买 nike

我有一个返回 lambda 的 std::tuple 的函数,我想使用 std::tie() 将每个 lambda 分配给一个变量

>
#include<tuple>
#include <iostream>
using namespace std;

auto fn(){
auto f1 = []() {cout << "ran 1" << endl;};
auto f2 = []() {cout << "ran 2" << endl;};
return make_tuple(f1, f2);
}

int main()
{
auto res = fn();
auto f1,f2; // doesn't compile
tie(f1, f2) = res;

f1();
f2();
return 0;
}

问题是 lambda 必须来自类型“auto”,因为它们在编译时解析,但我无法在不定义变量的情况下将变量声明为 auto。那么我该怎么做才能编译这段代码呢?

最佳答案

C++17 引入 structured bindings这将为你做这件事。使用

const auto& [f1, f2] = fn();

将创建对返回对象的引用,以延长其生命周期,并引入 f1f2 作为元组成员的名称。

关于c++ - 使用 tie 从元组中分配 2 个 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254562/

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