traits和policy在泛型编程里面还是挺常见的。像stl的string实现里面就用到了traits,boost里面也很多地方用到traits。
traits和policy很多时候都会一起使用,让我们在泛型编程里面多了一些思路。
traits:中文解释为特征,记得候捷在《stl源码剖析》那本书里面还叫做萃取什么的。当我们想从一个类型身上获取他的一个附加特性的时候,往往可以考虑traits。...
分类:
编程语言 时间:
2014-12-17 12:53:23
阅读次数:
129
一讲到traits,相应的就会联系到policy。那么policy是干啥的呢?
看一下下面的累加代码。
template
typename traits::AccuT accum(const T* ptr, int len)
{
traits::AccuT total = traits::Zero();
for (int i = 0; i < len; i++)
{
total +...
分类:
编程语言 时间:
2014-12-16 19:14:24
阅读次数:
188
traits是个很好玩的东西,在泛型编程里面很常见。最早出于老外的一篇论文。http://www.cantrip.org/traits.html?seenIEPage=1 建议仔细阅读。
首先我们来看一段代码。
template
T accum(const T* ptr, int len)
{
T total = T();
for (int i = 0; i < len; i++)...
分类:
编程语言 时间:
2014-12-16 17:10:33
阅读次数:
270
前面的文章使用了type traits,其实traits还有value traits。
再看一下累加函数:
template
struct traits;
template<>
struct traits
{
typedef int AccuT;
};
template<>
struct traits
{
typedef int AccuT;
};
template
typename...
分类:
编程语言 时间:
2014-12-16 17:06:07
阅读次数:
158
在阅读yii2源码的时候接触到了trait,就学习了一下,写下博客记录一下。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构...
分类:
Web程序 时间:
2014-12-14 18:28:36
阅读次数:
265
//type_traits.h----应用于STL内部,而非规范化内容
//类似的,利用对象来特例化
struct __true_type {
}; struct __false_type {
};
//设计榨取机
template struct __type_traits { typedef __...
分类:
其他好文 时间:
2014-12-14 18:24:49
阅读次数:
207
template
class iterator//表示迭代器针对泛型iterator_traits时的底层代码
{ typedef T value_type;
}; template
struct iterator_traits//泛化iterator_traits,作用多层间接性
{ typede...
分类:
其他好文 时间:
2014-12-14 17:12:32
阅读次数:
210
STL源码剖析—迭代器与traits编程方法
STL的中心思想就是将算法和容器分开,彼此独立设计,最后再以粘合在一起,算法和容器的泛型化,并不是很难,C++的class templates和function templates可以达成目标,但是粘合在一起就是迭代器的事情。
这么一说迭代器就是为了粘合算法和容器的,如果单独设计迭代器,那么这个迭代器就必须知道某...
分类:
其他好文 时间:
2014-12-08 21:29:03
阅读次数:
161
源码如下: template struct __is_pointer_helper : public false_type { }; template struct __is_pointer_helper : public true_type { }; /// is_p...
分类:
编程语言 时间:
2014-12-08 12:06:01
阅读次数:
200
请看源码: template, is_function, is_array>::value> struct __is_convertible_helper { static constexpr bool value = is_void::va...
分类:
编程语言 时间:
2014-12-02 10:34:09
阅读次数:
223