我该怎么做:
#include <functional>
#include <boost/functional.hpp>
int foo(int){return 1;};
template<typename T>
int bar(T t)
{
return 10;/*or something*/
}
int main() {
bar< std::ptr_fun<int, int>(foo) > (1);
bar< boost::ptr_fun<int, int>(foo) > (1);
return 0;
}
在两个 ptr_fun-lines 中我都得到了error C2974: 'bar' : invalid template argument for 'T', type expected
. 据我所知prt_fun
,创建一个类型,但std::ptr_fun<int, int>(foo)
创建一个对象。有没有办法用函数指针usinf尽可能多地创建一个“初始化”类型?
可能可以通过手动编写仿函数来解决这个问题,但我相信有 ptr_fun 方式。