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++部分特化,就是这样.

posted @ 2022-02-11 18:55  zjh6  阅读(14)  评论(0)    收藏  举报  来源