使用boost::enable_if与boost::type_traits在模板中实现对模板类型的接口的限制
来源:互联网 发布:淘宝之前的电商 编辑:程序博客网 时间:2024/05/16 08:25
直上源码:
#include <cstdio>#include <iostream>#include <boost/utility.hpp>#include <boost/type_traits.hpp>struct IHello{virtual void Hello() = 0;};struct CHello:public IHello{virtual void Hello(){std::cout<<"Hello World"<<std::endl;}};struct NoHello{void Hello(){std::cout<<"No Hello World"<<std::endl;}};//此处要求T必须是继承自IHellotemplate<typename T>void ShowHello(T* shower){typedef boost::enable_if<boost::is_base_of<IHello,CHello>,IHello>::type HelloType;HelloType* hell_shower = shower;hell_shower->Hello();}int main(int argc,char** argv){CHello hello;ShowHello(&hello);//不是继承自IHello,则编译无法通过NoHello no_hello;ShowHello(&no_hello);return 0;}代码写得比较简单,主要是为了验证想法,C++有了boost和0x标准,越来越强大。
现在越来越感觉到设计的重要性,良好的设计让代码不失简洁又不会带来为了简洁而简洁导致的额外负担
当我们处于一个流程化的世界的时候,却把关注点集中于对现实世界物件的模拟,却忘了对流程的处理才是本质的需求
勿因设计而设计,因需要而设计,面向对象滥用则不如不用。
0 0
- 使用boost::enable_if与boost::type_traits在模板中实现对模板类型的接口的限制
- BOOST模板库实现的功能与lua在语言层级提供的支持之比较
- boost::enable_if与SFINAE原则
- C++模板中type_traits(类型特化)
- boost中模板函数addressof()实现原理
- boost准模板库time_duration类的使用
- boost准模板库time_duration类的使用(续)
- boost准模板库内存管理中pool和object_pool的使用
- boost::function与boost::bind 的使用
- boost学习之-enable_if
- boost::enable_if 详解
- boost.core.enable_if
- 在ecshop中如何实现对一个模板的添加?
- boost中singleton的实现
- boost中singleton的实现
- 【boost】boost::bind的使用
- [function & type_traits] VC6 的 function traits 和 function 模板的新的实现方法
- boost中regex的使用
- hdoj 1009
- 谷歌浏览器exe文件官方下载站点
- 改行Code(CR、LF、CR+LF)
- 解决X64操作系统PL/SQL连接报错问题 make sure you have the 32 bits oracle client installed
- 内容面板,内部窗体。
- 使用boost::enable_if与boost::type_traits在模板中实现对模板类型的接口的限制
- hdu——1050——Moving Tables
- 计算机基本编码 UTF-8 与 UTF-16 的优劣
- PHP编码规范(1)
- 学习与生活
- 程序员的奋斗史(三十四)——人在囧途之应聘篇(四)
- CF 258B Little Elephant and Elections
- java命名规则和数据类型
- struts2的上传