【发布时间】:2017-06-27 09:36:33
【问题描述】:
我发现 std::invoke 使用一组参数调用每个可调用对象,std::apply 将元组作为参数扩展为可调用对象。
是否有两者的组合可以调用任何使用元组作为参数的可调用对象?
#include <iostream>
#include <tuple>
#include <functional>
class A
{
private:
int n;
public:
A( int _n ): n(_n){}
void operator()(int x, double y )
{
std::cout << n << " " << x << " " << y << std::endl;
}
void MemFun( int x, double y )
{
std::cout << n << " " << x << " " << y << std::endl;
}
};
int main()
{
A a(100);
std::invoke( a, 10, 1.23 );
auto parm2 = std::make_tuple( 1,2.34);
std::apply ( a, parm2 );
std::invoke ( &A::MemFun, a, 4, 5.67 );
// ???
std::??apply_invoke?? ( &A::MemFun, a, parm2 );
}
【问题讨论】: