CG@CPPBLOG

/*=========================================*/
随笔 - 76, 文章 - 39, 评论 - 137, 引用 - 0
数据加载中……

《C++设计新思维》读书笔记(13)

2.8 type_info的一个外覆类(Wrapper

因为std::type_info类不太好用,作者提供的Loki库对其包装了一下,这节对其进行介绍,省去。

2.9 NullType EmptyType

Loki定义了两个非常简单的型别:NullType EmptyType。可以作为型别计算的边界。

1 class NullType;    //没有定义
2 class EmptyType{};

3章会展示其用途。

2.10 Type Traits

Traits 是一种可于编译期根据型别作判断的泛型技术,很想你在执行期根据数值进行判断一样。假设你想实作 Copying算法:

1 template <typename InIt, typename OutIt>
2 OutIt Copy(InIt first, InIt last, OutIt result)
3 {
4     for(; fist!=last; ++first, ++result)
5         *result = *first;
6 }

另外假设你有一个针对硬件优化的非常快的内建函数,你希望尽可能发挥改函数的好处。 

1 void BitBlast(const void* src, void* dest, size_t bytes);

这是一个只针对基本型别并有着简朴旧式结构的实作,你不能将它用于拥有“nontrivial copy构造函数的型别上。你可能需要对型别判断,以判断是否可以利用BitBlast,以便对基本型别快速执行。

你需要判断:
1
InIt OutIt是一般指针吗?(针对iterator迭代器而言)
2
InIt OutIt所指的型别可以bitwise copy(位逐一拷贝)吗?

Type traits 有助于解决这样的问题。

posted on 2007-12-23 12:14 cuigang 阅读(257) 评论(0)  编辑 收藏 引用 所属分类: 《C++设计新思维》读书笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理