C++template元编程学习心得-switch结构

原创 2015年07月07日 23:06:40

C++ template元编程–switch结构

swtich结构在template中的实现很简单,但是用途确实很广泛的啦!
首先我们来看看switch结构在template中一般都长什么样子

switch结构范本

//switch结构
//switch:
    case1:
    case2:
    else:

template<class T>
struct dosomthing{}; //声明swtich的接口,并进行else分支

template<>
struct dosomething<T>{}; //进行实现,比如case1,或case2等等
例子
//作用,用来判断一个类型是不是int类型
template<class T>
struct is_int{
    static bool value = false;
}; //声明一个template swtich的接口,并对else情况进行判断

template<>
struct is_int<int>{
    static bool value = true;
};
更复杂的一个例子
//作用,用来把一个类型的constant去掉,得到一个不含constant的类型
template<class T>        //声明接口,实现else分支
struct remove_constant{
    typedef T type;
};

template<class T>   //实现其他case的分支
struct remove_constant<const T>{
    typedef T type;
};

template<class T> is_integral_impl;

//用来判断一个类型是不是整数
template<class T>
struct is_integral:is_intgral_impl<typename remove_constant<T>::type>{};  
//此处将判断进行了转发,并且去掉了T可能带有的constant


//此处是真正进行判断的函数的声明和else分支实现
template<class T>
struct is_integral_impl{
    static bool value = false;  
};

//case:int
template<>
struct is_integral_impl<int>{
    static bool value = true;
};

//case:long int
template<>
struct is_integral_impl<long int>{
    static bool value = true;
};

//case: short
template<>
struct is_integral_impl<short>{
    static bool value = true;
};

//case:char
template<>
struct is_integral_impl<char>{
    static bool value = true;
};

看到了这里,有些朋友肯定会发现,其实,上面的给出的三个个template,实际上
就是C++ 11标准里面的type support函数的不完全的实现的啦,不过大体的意思已经到了.

相关文章推荐

C++中的“模板元编程”——Template Metaprogramming(TMP)

C++中的“模板元编程”Template Metaprogramming(TMP),从一个极简单的小例子窥探提高程序性能的一种行径——前移运行期计算至编译期。...
  • fanfanK
  • fanfanK
  • 2013年11月07日 20:36
  • 4842

《Effective C++》:条款48:认识template元编程

认识template元编程

C++模板元编程(C++ template metaprogramming)

 转自:http://www.cnblogs.com/liangliangh/p/4219879.html 实验平台:Win7,VS2013 Community,GCC 4.8.3(在线版) ...

C++模板元编程(C++ template metaprogramming)

C++模板元编程(C++ template metaprogramming) http://www.cnblogs.com/liangliangh/p/4219879.html ...

c++primer学习心得

  • 2008年08月28日 13:55
  • 25KB
  • 下载

Qt应用编程学习心得

  • 2012年11月08日 17:29
  • 1.6MB
  • 下载

c++模板元编程学习笔记(一)

习题 2-1.编写一个三元元函数replace_type,它接受一个任意复合类型c作为其第一个参数,并将c中出现的type x替换为y:typedef replace_type::type t1;//...

c++prime学习心得

  • 2017年08月20日 18:30
  • 51KB
  • 下载

C++学习心得 编程经验

  • 2010年03月18日 22:37
  • 8KB
  • 下载

学习C++模板元编程(1)

学习C++模板元编程(1) 2006-12-03 21:44 3183人阅读 评论(0) 收藏 举报 c++编程descriptorreturningreferencestruct ...
  • pi9nc
  • pi9nc
  • 2013年04月14日 11:13
  • 428
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++template元编程学习心得-switch结构
举报原因:
原因补充:

(最多只允许输入30个字)