2015-01-16 星期五 8:02:02
1、Int2Type
1
2
3
4
5
|
template
<
int
v>
struct
Int2Type
{
enum
{ value = v };
};
|
1
2
3
4
|
bool
r;
r=Int2Type<1>::value==1;
r=Int2Type<
false
>::value==0;
|
Int2Type可以抛弃switch case。
2、Type2Type
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
template
<
typename
T>
struct
Type2Type
{
typedef
T OriginalType;
};
template
<
class
T1,
class
T2>
struct
SameType
{
static
const
bool
value=
false
;
};
template
<
class
T>
struct
SameType<T,T>
{
static
const
bool
value=
true
;
};
|
1
2
|
bool
r;
r=SameType<Type2Type<
char
>::OriginalType,
char
>::value;
|