C++ 泛型std::函数上的包装类
我试图编写一个包装类C++ 泛型std::函数上的包装类,c++,visual-studio-2013,lambda,C++,Visual Studio 2013,Lambda,我试图编写一个包装类foo,它将std::function作为参数,并公开一个调用该std::function的方法。我尝试了以下方法,但没有成功 template<class R, class ...Args> class foo { public: foo(std::function<R(Args...)> f) :_f(f) { } R invoke(Args... args) {
foo
,它将std::function
作为参数,并公开一个调用该std::function
的方法。我尝试了以下方法,但没有成功
template<class R, class ...Args>
class foo
{
public:
foo(std::function<R(Args...)> f)
:_f(f)
{
}
R invoke(Args... args)
{
return _f(args...);
}
private:
std::function<R(Args...)> _f;
};
int main()
{
foo<void()> f([&](){ std::cout << "hi\n"; });
f.invoke();
}
我如何才能做到这一点?更改此选项:
foo<void()> f([&](){ std::cout << "hi\n"; });
foo<void()> f([&](){ std::cout << "hi\n"; });
foo<void> f([&](){ std::cout << "hi\n"; });
template<class T>
class foo;
template<class R, class ...Args>
class foo<R(Args...)> {...};
foo<void()> f([&](){ std::cout << "hi\n"; });