どうすれば次のようなことができますか?
#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を使用して「初期化」された型をできるだけ多くのstdで作成する方法はありますか?
ファンクターを手動でコーディングすることでおそらくこれを解決できますが、ptr_fun-wayがあると信じています。