gpt4 book ai didi

c++ - 让编译器为 std::function 生成一个空的默认函数

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:09 24 4
gpt4 key购买 nike

在这段代码中,我希望 ... 成为“具有匹配参数的空函数”的非冗长方式:

std::function<void(int foo, float bar)> somefunc  = ...;

我希望它生成与此对应但不重复参数类型的代码:

std::function<void(int foo, float bar)> somefunc  = [](int, float) {};

背景

我可以这样声明和初始化一个std::function:

std::function<void(int foo, float bar)> somefunc;

然后我可以这样调用它:

if(somefunc) {
somefunc(42, 4711.0f);
}

但是 if 语句使代码膨胀(我不太喜欢空指针),所以我可以用默认的空实现来定义函数:

std::function<void(int foo, float bar)> somefunc  = [](int, float) {};

然后调用将很简单:

somefunc(42, 4711.0f);

但是像这样重复参数会有点重复,所以我想要生成空实现的东西。

最佳答案

C++14 支持泛型 lambda:

std::function<void(int foo, float bar)> somefunc  = [](auto&&...) {};
somefunc(42, 4711.0f);

关于c++ - 让编译器为 std::function 生成一个空的默认函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57522428/

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