#include <tuple>
//元組
std::make_tuple()
//可放不同類型且不需要指定類型,生成一個(gè)std::tuple<Args...>
std::tuple<Args...>
//需要指定類型如std::tuple<int,double>(1,0.1);
std::tuple_cat()
//輸入多個(gè)std::tuple拼接成一個(gè)std::tuple
std::apply(para_1, std::tuple(para_2, para_3))
//para_1:函數(shù) (普通函數(shù):函數(shù)名,靜態(tài)成員函數(shù)XXX::XXX,成員函數(shù)&XXX::XXX)
//para_2:成員函數(shù)時(shí)為類對(duì)象簸搞。否者和para_3都是參數(shù)列表
//std::apply第二個(gè)參數(shù)是std::tuple
std::bind(para_1,std::placeholders::_1);
//para_1同上是函數(shù)名或地址
//返回值是一個(gè)仿函數(shù)。
//std::placeholders::_1參數(shù)順序的占位符
//參數(shù)個(gè)數(shù)好像是寫死的蒜危,我是用匿名函數(shù)代替。
Args&& ... args//可變參數(shù)模板
std::forward<Args...>(args...)//完美轉(zhuǎn)發(fā)可變參數(shù)
//函數(shù)指針通用寫法睹耐,還可以加入const在末尾表示const函數(shù)
template<typename Class, typename...Args>
void (Class::*func)(Args...)
template<typename Class, typename Return, typename...Args>
Return(Class::*func)(Args...)
結(jié)合std::function辐赞,void*就能做出插件框架