c++17新函數(shù)機(jī)制組合(元組)

#include <tuple>
//元組
std::make_tuple()
//可放不同類(lèi)型且不需要指定類(lèi)型,生成一個(gè)std::tuple<Args...>
std::tuple<Args...>
//需要指定類(lèi)型如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í)為類(lèi)對(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ù)好像是寫(xiě)死的,我是用匿名函數(shù)代替。
Args&& ... args//可變參數(shù)模板
std::forward<Args...>(args...)//完美轉(zhuǎn)發(fā)可變參數(shù)
//函數(shù)指針通用寫(xiě)法,還可以加入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*就能做出插件框架

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容