Fou*_*met 3 c++ lambda templates std-function
我想std::function从lambda创建一个,在 a 中template,它将所需的实例std::function作为其参数:
template <class functionT>
functionT make_lambda() {
return [](/* ignore all args */){ std::cout << "my lambda\n"; };
}
Run Code Online (Sandbox Code Playgroud)
然后调用template具有不同别名的std::function:
using function_no_args = std::function<void(void)>;
using function_args = std::function<void(int)>;
make_lambda<function_no_args>()(); // output: "my lambda"
make_lambda<function_args>()(999); // compile error
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
一些精度:
std::function,在traits结构中定义它们并将它们传递给我的代码的多个部分void,只有参数可能会改变简单地使用带有参数包的通用 lambda 来吞下并忽略可能给它的任何参数:
template <class functionT>
functionT make_lambda() {
return [](auto&&...){ std::cout << "my lambda\n"; };
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |