gpt4 book ai didi

c++ - std::function 参数列表和 typedef

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:21:55 25 4
gpt4 key购买 nike

我有一个类似这样的 typedef:

typedef std::function<int arg1, float arg2> MyFunction;

在我的代码中某处是这样使用的:

MyFunction func = [](int arg1, float arg2){ /* do someting */ };

问题是,每次我更改函数的参数数量(例如,我添加第三个参数 char arg3)时,我都被迫在我使用 MyFunction 的所有代码中更新它(即使这些根本不使用参数。

而且我懒得那样做。有没有办法从它的类型中获取 std::function 的参数列表? (我的意思是)这样函数创建看起来像那样?:

MyFunction func = [](MyFunction::args){ /* do someting */ };

最佳答案

自 C++14 起,您可以使用可变多态 lambda:

MyFunction func = [](int arg1, float arg2, auto&&... unused){ /* ... */ };

这将转换为 std::function<Sig>对于任何签名开头 int, float .

关于c++ - std::function 参数列表和 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37345706/

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