更多模板特例化的例子如下(参考了文献[1]第44页):
- template<typename T, int i> class cp00; // 用于模板型模板参数
- // 通例
- template<typename T1, typename T2, int i, template<typename, int> class CP>
- class TMP;
- // 完全特例化
- template<>
- class TMP<int, float, 2, cp00>;
- // 第一个参数有const修饰
- template<typename T1, typename T2, int i, template<typename, int> class CP>
- class TMP<const T1, T2, i, CP>;
- // 第一二个参数为cp00的实例且满足一定关系,第四个参数为cp00
- template<typename T, int i>
- class TMP<cp00<T, i>, cp00<T, i+10>, i, cp00>;
- // 编译错误!,第四个参数类型和通例类型不一致
- //template<template<int i> CP>
- //class TMP<int, float, 10, CP>;
|