#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
//namespace _nmsp1
;classa;
template
<
typename..
.args>
class
myclasst
;//主模板
template
<
>
class
myclasst
<
>
//0個模板引數的特化版本};
template
<
typename first,
typename..
. others>
class
myclasst
>
//: private myclasst//偏特化
myclasst
(first parf, others.
..paro)
:m_i
(parf)
,m_o
(paro...
)//, myclasst(paro...)
first m_i;
myclasst> m_o;
//組合關係(復合關係)};
void
func()
}namespace _nmsp2};
//需要有乙個特化版本,用於結束遞迴呼叫
template
<
int mymaxcount,
typename..
.t>
class
myclasst
< mymaxcount, mymaxcount, t...
>};
template
<
typename..
.t>
void
myfunct
(const tuple>
&t)//可變參函式模板
void
func()
}namespace _nmsp3}}
;template
<
typename t>
using myvec = vector>
;//這種套路,寫法很固定
template
<
typename t>
using mylist = list>
;//這種套路,寫法很固定
void
func()
}int
main()
可變參模板續 模板模板引數
include include include include include using namespace std 從類模板引入 template t u叫模板引數,更具體叫型別模板引數 前面有typename template typename t,型別模板引數 template class ...
C 11 14之可變參類模板與模板模板引數
通過tuple和遞迴呼叫展開引數包 總結模板 模板引數 組合關係 復合關係 class bclass a組合關係展開引數包案例template typename first,typename.others class myclass myclass first parf,others.paro m ...
C 可變參模板
可變引數模板是乙個接受可變數目引數的模板函式或模板類,在模板引數列表中,typename 指出接下來的引數表示0個或多個型別的列表,乙個型別名後面跟省略號表示0個或多個給定型別的非型別引數的列表。在函式引數列表中,如果乙個引數的型別是乙個模板引數包,則此引數也是乙個函式引數包。可變引數模板通常是遞迴...