c++看懂部分特化
元<类 M,类 N>构 H{};
元<整 I,类...M>构 MM{};
元<整 I,类...M>构 NN{};
元<整 M,整 N,类...A,类...B>
构 H<NN<M,A...>,MM<N,B...>>{
空 f(){
用 S=取型<M,A...>::型;
用 T=取型<N,B...>::型;
S().f();
T().g();
}
};
空 主(){
H<NN<0,B,C>,MM<1,D,E>>().f();
}
只有使用过一次才有感觉.用部分特化来处理两个参数包.
构 H<NN<M,A...>,MM<N,B...>>{
这里表明,H需要两个类型参数.分别为NN,MM.
H<NN<0,B,C>,MM<1,D,E>>().f();
上面这样实例化,用的不是H<M,N...>来实例化,而是用H<NN<0,B,C>,MM<1,D,E>>().f();来实例化.这些都是细节.用两个不同包装来特化.
这里,NN<M...>不能直接在前面加上数字,而要在NN的类型前面如下,加上整数字.
元<整 I,类...M>构 NN{};
//加个I.
C++的部分特化,就是这样.
浙公网安备 33010602011771号