gpt4 book ai didi

c++ - "inverse"通过丢弃c++中的参数进行绑定(bind)

转载 作者:行者123 更新时间:2023-11-28 02:14:09 28 4
gpt4 key购买 nike

std::bind通过将剩余参数设置为预设值来减少函数采用的参数数量。是否还有通过丢弃参数来增加参数数量的函数?

例如,创建一个接受 int 的函数来自 function类型 function<void()> ,可以使用 lambda 来执行此操作,如下所示:

[=](int){function();}

所以不用辅助函数很容易做到,但是对于std::bind也是一样的.

标准中是否有执行此操作的内容?

为什么我会问这个

我可以用

[](){function(3);}

绑定(bind)3到函数的参数。但我发现这段代码的可读性较差(至少对于了解绑定(bind)的人而言)。在我使用 bind 的那一刻,我的意图就很明确了。我想知道这是否也适用于“反向”绑定(bind)。

最佳答案

你的前提是错误的。 bind 的目的不是减少参数的数量。绑定(bind)表达式的调用参数个数与绑定(bind)函数的参数个数本质上是无关的。事实上,您可以使用任意数量的参数调用绑定(bind)表达式(但至少与占位符一样多)。

例如,考虑:

int f(int, int);

auto g = std::bind(f, std::bind(f, _1, _2), std::bind(f, _2, _3));

这定义了 g(x, y, z) := f(f(x, y), f(y, z))

关于c++ - "inverse"通过丢弃c++中的参数进行绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566236/

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