C++17新增了apply函数:
template< class F, class Tuple >
constexpr decltype(auto) apply( F&& f, Tuple&& t );
该函数可以将一个tuple直接解构,用于函数f的参数,从而完成函数的调用:
#include <iostream>
#include <tuple>
#include <string>
using namespace std;
int add(int p1, int p2)
{
cout<<p1<<"+"<<p2<<"=";
return p1 + p2;
}
int main()
{
tuple t = {1, 2};
cout<<apply(add, t)<<endl; //apply将t解构,然后用于函数add的参数,apply的返回值就是add的返回值
return 0;
}
运行程序输出:
1+2=3
对于类的成员函数,可以将类对象放在tuple的第一个元素,完成调用:
#include <iostream>
#include <tuple>
using namespace std;
class A{
public:
void pOut(int d)
{
cout<<"this is A object, d="&l