Can I generate a function without providing arguments?

廉价感情. 提交于 2019-11-29 16:23:10

Your question has some most important part in the end in the fine print. If your foo is a template, C++17 deduction guides won't help you with a simple syntax like

std::function f(foo);

You'd still need to provide template arguments for foo. Assuming you are OK with specifying foo's argument types (as you have to be) writing make_func is a trivial exercise:

 template<class R, class... ARGS>
 auto make_func(R (*ptr)(ARGS...)) {
      return std::function<R (*)(ARGS...)>(ptr);
 }

And than you use it:

auto bar = make_func(&foo<Z, Y, Z>);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!