在这段代码中,我希望 ...
成为“具有匹配参数的空函数”的非冗长方式:
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/