c++模板元编程六:integral_constant 类
来源:互联网 发布:淘宝换货售后卡怎么填 编辑:程序博客网 时间:2024/06/07 05:54
1 integral_constant类
这个类是所有traits类的基类,分别提供了以下功能:
- value_type 表示值的类型
- value表示值
- type 表示自己, 因此可以用::type::value来获取值
- true_type和false_type两个特化类用来表示bool值类型的traits,很多traits类都需要继承它们
下面的代码分别来自C++11和Boost,略有差别:
- C++11包含value_type()函数,返回真正的value
- C++11用constexpr关键字表示在编译期执行
// from c++11 standardnamespace std { template <class T, T v> struct integral_constant { static constexpr T value = v; typedef T value_type; typedef integral_constant<T,v> type; constexpr operator value_type() { return value; } }; typedef integral_constant<bool, true> true_type; typedef integral_constant<bool, false> false_type;}// from boosttemplate <class T, T val>struct integral_constant{ typedef integral_constant<T, val> type; typedef T value_type; static const T value = val;};typedef integral_constant<bool, true> true_type;typedef integral_constant<bool, false> false_type;
下面是调用代码,看看基本使用方法:
#include <iostream>#include <type_traits>using std::cout;using std::endl;int main() { typedef std::integral_constant<int, 1> one_t; cout << "one_t::value: " << one_t::value << endl; cout << "one_t::type::value: " << one_t::type::value << endl;}
输出结果是:
one_t::value: 1one_t::type::value: 1
注意value_type()是一个类型转换函数,有了它,可以将模板类转换成T(这里T是int), 调用代码如下:
int i = one_o; // same as int i = 1;// or int i = static_cast<int>(one_o);// or one_o.operator one_t::value_type();
0 0
- c++模板元编程六:integral_constant 类
- 【C++】traits技术与模板元编程
- 模板--模板元编程
- 【C/C++】C++模板元编程 入门简介
- 模板元程序(六)
- 初探模板元编程
- 模板元编程
- C++模板元编程
- 模板元编程
- 模板元编程
- C++模板元编程
- C++模板元编程
- 模板元编程-C++
- C++模板元编程
- 模板元编程(二)
- 模板元编程练习
- 模板元编程练习
- 模板元编程简介
- php 加xml创建小型客户关系管理登陆系统
- 动态规划
- Leetcode---Generate Parentheses
- CRT函数相关问题,gets_s和strcpy_s的用法
- 黑马程序员——C语言——C语言程序编写
- c++模板元编程六:integral_constant 类
- 【Android开发】高级组件-拖动条和星级评分条
- C++虚函数调用
- 哥德巴赫猜想的测试及分析
- 黑马程序员——C语言——计算机和软件基本常识
- hdoj 1395 2^x mod n = 1
- 网络设备与冲突域和广播域
- 第五周 阅读程序 在 main 函数中,可设置指向对象public 成员、对象函数还有对象的指针
- 常用的搜索排序算法总结