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++模板元编程五:switch/case语句编译时运行

2.4 switch/case 替代现在模拟switch/case语句,不过也是在编译期运行。先看调用代码和输出结果// test case cout ...
  • sheismylife
  • sheismylife
  • 2015年04月05日 20:55
  • 2007

C++之:模板元编程(一)

一、概念 利用模板特化机制实现编译期条件选择结构,利用递归模板实现编译期循环结构,模板元程序则由编译器在编译期解释执行。 template class 类名{// 类定义...... };其中,t...
  • Scythe666
  • Scythe666
  • 2016年03月15日 20:12
  • 984

C++语言中的元类编程(一)

这个主题可能对于一些具有C++语言编程经验的朋友会有些陌生,然而我希望读完这篇文章的朋友可以有一种“啊,原来C++语言还可以这样”的奇妙感觉!...
  • banqingzi
  • banqingzi
  • 2014年03月17日 19:39
  • 1055

C++11模版元编程的应用

1.概述   关于C++11模板元的基本用法和常用技巧,我在程序员2015年2月B《C++11模版元编程》一文(后称前文)中已经做了详细地介绍,那么C++11模版元编程用来解决什么实际问题呢,在...
  • u011135902
  • u011135902
  • 2016年02月19日 11:59
  • 734

C++模板元编程(一)

C++模板元编程(一)  Traits和类型操纵
  • corfox_liu
  • corfox_liu
  • 2015年12月28日 23:34
  • 672

宏元编程——代码生成

通过宏来自动生成代码,可以提高代码可读性,降低代码维护成本,减少重复代码输入。...
  • jakcymay
  • jakcymay
  • 2016年03月09日 10:07
  • 242

C++11模版元编程

C++11模版元编程 http://www.cnblogs.com/qicosmos/p/4480460.html 1.概述   模版元编程(template metaprogr...
  • zdy0_2004
  • zdy0_2004
  • 2015年05月07日 22:55
  • 627

Python 元编程

元编程 黑魔法防御 元编程是一种黑魔法,正派人士都很畏惧。——张教主 何谓元编程 编写一个程序,能够操纵,改变其他程序,这就是元编程 最简单的来说,C的宏就是元编程的一种...
  • leongongye
  • leongongye
  • 2015年09月10日 14:34
  • 645

Python元编程-遗忘的远古凶兽

元编程 黑魔法防御 元编程是一种黑魔法,正派人士都很畏惧。——张教主 何谓元编程 编写一个程序,能够操纵,改变其他程序,这就是元编程 最简单的来说,C的宏就是元编程的一种 元编程的另一大代表则是l...
  • VCCTor
  • VCCTor
  • 2016年02月05日 02:54
  • 1153

C++11 模板元编程初探: 在编译期间确定斐波那契数列

编译期求斐波那契数列!Enum Hack!
  • Kiritow
  • Kiritow
  • 2016年05月04日 09:45
  • 1061
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++template元编程学习心得-switch结构
举报原因:
原因补充:

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