[转载]了解模板元编程
Item 48: Be aware of template metaprogramming.
模板元编程(Template Metaprogramming,TMP)就是利用模板来编写那些在编译时运行的C++程序。 模板元程序(Template Metaprogram)是由C++写成的,运行在 ...
[转载]C++模板的偏特化与全特化
模板机制为C++提供了泛型编程的方式,在减少代码冗余的同时仍然可以提供类型安全。 特化必须在同一命名空间下进行,可以特化类模板也可以特化函数模板,但类模板可以偏特化和全特化,而函数模板只能全特化。 模板实例化时会优先匹配”模板参数”最相符的那个特化版本。
C++的模板机制被证明是图灵完备的,即 ...
[转载]STL源码剖析之算法:copy & copy_backward
copy() 是一个调用频率非常高的函数,所以SGI STL的copy算法用尽各种办法,包括函数重载(function overloading)、型别特性(type traits)、偏特化(partial specialization) 编程技巧,无所不用其极地加强效率。下图是整个copy ...
[转载]C++ trivial和non-trivial构造函数及POD类型
最近正纠结这个问题就转过来了,做了点补充(参考《深度探索C++对象模型》)
trivial意思是无意义,这个trivial和non-trivial是对类的四种函数来说的:
默认构造函数(default constructor)
拷贝构造函数(copy constructor)
赋值函数(co ...
[转载]谈乱序执行和内存屏障
10多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代高级语言多提供了多线程并发技术,如果不深入下来,那么有些由多线程造成问题就很难排查和理解.
今天准备来 ...
[转载]X86平台乱序执行简要分析(翻译为主)
多处理器使用松散的内存模型可能会非常混乱,写操作可能会无序,读操作可能会返回不是我们想要的值,为了解决这些问题,我们需要使用内存栅栏(memory fences),或者说内存屏障(memory barrier)。
X86平台可能还算是使用松散内存模型的多处理器中还算比较好的了,它针对内存 ...
[转载]奇异递归模板模式(Curiously Recurring Template Pattern)
本篇短文将简短的介绍奇异递归模板模式(Curiously Recurring Template Pattern,CRTP),CRTP是C++模板编程时的一种惯用法(idiom):把派生类作为基类的模板参数。更一般地被称作F-bound polymorphism。
1980年代作为F-bound ...
[wiki]Substitution failure is not an error
From Wikipedia, the free encyclopedia
Substitution failure is not an error (SFINAE) refers to a situation in C++ where an invalid substitution of te ...
MyVector
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 ...
[转载]set_new_handler()总结
在看STL源码时,发现内存分配时会先调用set_new_handler(0);不知其意,故在网上搜寻了相关资料,总结如下:
函数原型: new_handler set_new_handler (new_handler new_p) throw(); new_handler类型函数将在 ...