我怎么可以做一些事情,如:ptr_fun - 无法创建类型?
#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线我得到了error C2974: 'bar' : invalid template argument for 'T', type expected
。据我所知prt_fun
创建一个类型,但std::ptr_fun<int, int>(foo)
创建一个对象。 有没有办法用函数指针usinf创建一个类型为“初始化”的尽可能多的std?
大概可以解决这个通过manualy编码仿函数,但我相信有ptr_fun方式。
你不能“初始化”一个类型。我不明白你想在你的例子中使用'T'。它应该是'int'吗?或者''指向非const函数的那个类型需要-int-int-and-returns-an-int'? – Mat
''bar''就是一个例子,它不是“真正的”代码。我需要用另一个函数来初始化一个模板函数(bar),它将完成不同的工作。所以,据我所知,我需要将函数转换为类型。这是什么ptr_fun做... – fogbit
不,“ptr_fun”不“返回类型”。它返回[pointer_to_unary_function]的一个对象(http://en.cppreference.com/w/cpp/utility/functional/ pointer_to_unary_function) – jrok