c++::关于类型萃取

听到类型萃取这个名字,很多人肯定都感觉好高大上啊,会不会很难,是个什么东西呢?别着急,听我娓娓道来。

【类型萃取】说白了就是对模板特化的一种应用。

1、类型萃取的作用:类型萃取使用模板技术来萃取类型(包含自定义类型和内置类型)的某些特性,用以判断该类型是否含有某些特性,从而在泛型算法中来对该类型进行特殊的处理用来提高效率或者其他。

我们来看一道读类型萃取应用的题:如果我们要编写一道通用加法的函数,但是它的返回值和参数的类型不同,也就是说,它的返回值和参数我们可以进行分开控制。来看我们怎么做:(这个例子是实现返回值返回的是提升一个类型)

#include
using namespace std;
template
struct ElemType;
template<>
struct ElemType
{
	typedef long Type;
	//int Type;
};
template<>
struct ElemType //我们本可以用char的但是编译器一般会将char默认为有符号还是无符号,我们未可知,
{
	typedef short Type;    //为了方便检查,我们用unsigned char
};
template
 typename ElemType::Type Add(T a,T b)
{
	typename ElemType::Type hhh;
	cout<

执行结果:


【分析说明】:

1)在 typename ElemType::Type Add(T a,T b)
  这句里使用typename 的原因是用于区分上面

template<>
struct ElemType
{
	typedef long Type;
	//int Type;
};
这段代码里的Type.

2)我们有两种方式检查输出:

A、在主函数里

//cout<
B、利用typeid

typename ElemType::Type hhh;
	cout<

这就是类型萃取的一个应用,是不是茅塞顿开!!!

更多它的应用,待以后我慢慢道来。。

你可能感兴趣的:(C++)