我以前这里的问题Variadic template, function as argument调用带有一个成员函数可变参数模板函数基于
我已经结束了下面一个简单的类,但我怎么使用std ::调用或一些其他方法来调用测试: :用Tester :: simple作为参数测试? http://en.cppreference.com/w/cpp/utility/functional/invoke#Example提供的例子对我来说不是很有帮助,我尝试了很多不同的使用std :: invoke的方法。
class Tester {
public:
template<typename F, typename... Args>
decltype(auto) test(F&& f, Args&&... args) {
return std::forward<F>(f)(std::forward<Args>(args)...);
}
int simple(int i) { return i; }
};
int main()
{
Tester t;
std::cout << t.test(t.simple, 3); // how do you modify this line such that the code compiles?
}
谢谢!
现在它与非成员函数不兼容。试试't.test(放,“你好!”)'。 –
@HenriMenke确实如此。据我所知,OP在这个问题上有兴趣处理成员函数。所以我为成员函数添加了一个简单的解决方案。现在,OP可以自由结合他的问题解决方案来实现所需的功能。或者,如果他的编译器允许他这样做,只需使用'std :: invoke'即可:) –