標題有點錯誤,apply是用tuple做參數(shù),調(diào)用一個函數(shù)。這個標題是為了能更好的適配搜索關(guān)鍵字。

動態(tài)數(shù)組用作函數(shù)參數(shù)更適合嵌入了腳本環(huán)境的C++程序,比如lua或javascript(js)。

若有疏忽或改進,請評論,謝謝。

VS2017雖然實現(xiàn)了一些C++17特性,但沒有apply(也許我沒發(fā)現(xiàn)或有替代),而且即使以后更新添加了,也不是很滿足我提到的數(shù)組轉(zhuǎn)參數(shù)列表。

下面是VS2015.3測試通過的代碼。

寫腳本封裝(Wrapper)功能一般都是把C++函數(shù)(一般是成員函數(shù))注冊到腳本的環(huán)境,我看了很多開源作者都重載了很多模板類/模板函數(shù),其實都挺類的,雖然都是一些體力活,但一旦修改就是批量的。

本文參考了stackoverflow的Johannes Schaub的回復(fù),附錄有鏈接。

代碼中的intint只是一個自動轉(zhuǎn)換例子而已,什么也沒做,你可以替換為你的腳本對象轉(zhuǎn)原生對象的轉(zhuǎn)換器。

代碼的核心部分是嵌套的模板類繼承,這一段比較燒腦子:

template<int ...>struct seq {};
template<int N, int ...S> struct gen_seq : gen_seq<N - 1, N -&nb