模板拾遗二_traits和policy

1,traits




char name[] = "templates";

int legnth = sizeof(name) - 1;

accum(&name[0], &name[legnth]);


2,value trait



value trait有个缺点:在所在类的内部,C++只允许对整形和枚举类型初始化成静态成员变量。
显然folat或其它自定义类型等不能使用上面解决方案。


3,使用静态成员函数来做为value trait




4,
trait提供了一种配置具体元素(通常是类型)的途径,而该途径通常是泛型计算。

前面三种被称为fixed trait,一点定义了这个分离的trait就不能子啊算法中对其进行改写。

从原则上讲参数化trait的主要目的在于:添加一个具有缺省值的模板参数,而且该缺省值由前面介绍的fixed trait决定。
有这种缺省值用户就不用提供这个额外的模板实参,但是也可以改写这个预设类型。
目前一些编译器对函数模板预设缺省模板实参还不支持,因此将其实现为一个类。



5,policy
上面traitstotal += *beg;除求和外还有求积、字符串连接等累积操作。
于是,我们把一个累积操作称为一个policy
因此一个policy类就是一个提供了一个接口的类。




转载于:https://www.cnblogs.com/liuhan333/p/6884605.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值