Posted on 2011-06-06 13:08
S.l.e!ep.¢% 阅读(332)
评论(0) 编辑 收藏 引用 所属分类:
C++
模板的偏特例化
1 #include <iostream>
2 using namespace std;
3
4 template <typename T>
5 class cons
6 {
7 public:
8 void test()
9 {
10 cout << "other typename" << endl;
11 }
12 };
13
14 template <>
15 class cons<int>
16 {
17 public:
18 void test()
19 {
20 cout << "int typename" << endl;
21 }
22 };
23
24 int main()
25 {
26 cons<int> test1;
27 cons<double> test2;
28
29 test1.test();
30 test2.test();
31
32 return 0;
33 }
34
简单的tuple版本
1 #include <iostream>
2 using namespace std;
3
4 class null_type
5 {};
6
7 template <typename T1 = null_type, typename T2 = null_type>
8 class cons
9 {
10 public:
11 T1 value;
12 cons<T2> value_cons;
13 };
14
15 template <>
16 class cons<null_type, null_type>
17 {
18 public:
19 };
20
21 int main()
22 {
23 cons<int> test1;
24 cons<int, int> test2;
25
26 cout << sizeof(test1) << endl;
27 cout << sizeof(test2) << endl;
28
29 return 0;
30 }
31