我怎麼可以做一些事情,如: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