模板函数 重载/特化
来源:互联网 发布:网络黑侠 编辑:程序博客网 时间:2024/06/03 02:47
见代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
#include <vector>
using
namespace
std;
template
<
typename
T>
T max(T a,T b,T c)
{
cout<<
"primary template"
<<endl;
if
(b>a)
{
a=b;
}
if
(c>a)
{
a=c;
}
return
a;
}
//形参个数不同的重载
template
<
typename
T>
T max(T a, T b, T c, T d)
{
cout<<
"override"
<<endl;
if
(b>a)
{
a=b;
}
if
(c>a)
{
a=c;
}
return
a;
}
//特化T max(T a,T b,T c)
#if 0 //ok
template
<>
int
max<
int
>(
int
a,
int
b,
int
c)
#else
//ok: explicit template argument int deduced fromparameter types
template
<>
int
max(
int
a,
int
b,
int
c)
#endif
{
cout<<
"template specialization"
<<endl;
if
(b>a)
{
a=b;
}
if
(c>a)
{
a=c;
}
return
a;
}
//仅演示全特化/偏特化
template
<
typename
T1>
bool
min_test(T1 a, T1 b)
{
cout<<
"min_test: primary template"
<<endl;
return
true
;
}
#if 1
template
<>
bool
min_test<
int
>(
int
a,
int
b)
{
cout<<
"min_test: full template specialization"
<<endl;
return
true
;
}
#endif
//全特化:全部参数指定类型
//偏特化:部分参数指定类型
#if 0
//error: function template partial specialization ‘min_test<T1, int>’ is not allowed
template
<
typename
T1,
typename
T2>
bool
min_test<T1,
int
>(T1 a,
int
b)
{
cout<<
"min_test: partial template specialization"
<<endl;
return
true
;
}
#endif
typedef
struct
myval_s
{
int
val0;
int
val1;
}myval_t;
int
main( )
{
int
i1=185, i2=-76, i3=567, i;
double
d1=56.87, d2=90.23, d3=-3214.78,d;
long
g1=67854, g2=-912456, g3=673456, g;
i=max(i1,i2,i3);
cout<<
"i_max="
<<i<<endl<<endl;
d=max(d1,d2,d3);
cout<<
"f_max="
<<d<<endl<<endl;
g=max(g1,g2,g3);
cout<<
"g_max="
<<g<<endl<<endl;
g=max(g1,g2,g3,g3);
cout<<
"g_max="
<<g<<endl<<endl;
min_test(i1, i2);
min_test(d1, d2);
return
0;
}
0 0
- 模板函数 重载/特化
- 函数模板特化 遇到 函数重载
- 模板函数的全特化与重载
- 从零开始学C++之模板(一):函数模板、函数模板特化、重载函数模板、非模板函数重载
- 从零开始学C++之模板(一):函数模板、函数模板特化、重载函数模板、非模板函数重载
- C++模板特化与重载
- 模板的特化与重载
- C++模板重载和特化
- 嵌套重载以及模板特化
- 模板完全特化,函数重载的重载,类模板的继承
- 模板函数特化
- 函数模板的特化
- 模板函数的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板特化问题-compare函数特化
- Android短信与电话:简易实例
- 用Storyboard构建标签栏多页面应用程序UI
- android scale 动画效果
- bzoj1800: [Ahoi2009]fly 飞行棋 统计直径
- mac下tomcat的安装与配置
- 模板函数 重载/特化
- 模式对话框
- [2774]小P的故事——神奇的发票报销 (sdut)
- Elisp写Emacs org mode 插入源码的模板
- 【2141】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 (SDUT)
- 关于 linux 管道中 read 和 write的返回值问题
- 记录几款开发客户端常用的工具(Process Monitor & Process Explorer )
- UVA - 565 Pizza Anyone?(状态压缩+暴利枚举)
- 【2142】数据结构实验之图论二:基于邻接表的广度优先搜索遍历 (SDUT)