所以C ++ 17具有std::function
扣除指南等等给出:
int foo();
我可以:
std::function bar(foo);
但是我被困在c ++ 14编译器上。在那里,我必须做更多的事情:function<int()> bar(foo)
。我想知道是否有一种方法可以创建一个std::function
不通过函数指针并显式提供函数签名的方法?因此,例如make_pair
将从参数的推论中推断出其类型。我想知道是否可以function
使用c ++ 14为s编写类似的内容,例如:
auto bar = make_function(foo);
这可行吗?
注意:我的真实情况是这foo
是一个模板函数,带有很多我不想推断的参数。因此,我的动机是在function
无需提供参数类型的情况下生成。
最后,您的问题最重要的部分是精美的文字。如果您foo
是模板,C ++ 17演绎指南将无法通过简单的语法为您提供帮助,例如
std::function f(foo);
您仍然需要为提供模板参数foo
。假设您可以通过指定foo
的参数类型(如您所愿)来编写make_func,这是一个简单的练习:
template<class R, class... ARGS>
auto make_func(R (*ptr)(ARGS...)) {
return std::function<R (*)(ARGS...)>(ptr);
}
并且比您使用它:
auto bar = make_func(&foo<Z, Y, Z>);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句