如何在lambda中捕获函数结果?

时间:2020-10-02 15:25:56

标签: c++ lambda capture

我想知道是否可以捕获函数结果:

tr

有没有办法做到这一点?我知道,在更新的C ++标准中,您可以在捕获列表中创建新变量,所以类似这样?

system2("tr", c("¬", ","), stdin="quux.csv", stdout="quux2.csv")
read.csv("quux2.csv")
#   a b c
# 1 1 2 3

1 个答案:

答案 0 :(得分:5)

语法略有不同。捕获组中实体的类型是从初始化程序推导出的,您不能明确指定类型:

auto lambda = [copy = a.func()] () { std::cout << copy; };
           // ^ no int

如果仅用,分开它们,则也可以在捕获组中创建多个不同类型的实体:

auto lambda = [x = a.func(), y = a.func2()] () { std::cout << x << y; };

这里是demo