原创 C++ local class 的用途:finalizer 手法

 在有異常的程序裏面,函數的出口變得難以捉摸起來,這是大家都知道的了。但是很多時候,我們希望函數在退出之前能夠一定完成某些事情,在 Java 裏面,我們用 try...finally 來幹這件事;而在 C+

原创 Traits

Traits Use of traits is anothercommon programming techniquein conjunction with template pr

原创 Template Metaprogramming - cont.1

MPL 是一個非常聰明的作品,在發揮 C++ 模板威力這方面登峯造極,而其接口的優雅、設計的一致性和思想的完整性讓 Loki 這樣類似的作品也相形見絀。廢話少說,我們上代碼。#include #includ

原创 unspecified_bool_type 手法

在 C++ 中,有時候我們需要一個自定義類型能夠支持 if(obj) 和 if(!obj) 之類的語法,也就是說MyClass obj;if(obj){  //do something}if(!obj){ 

原创 Template Metaprogramming

1. 何謂 Metaprogramming?Metaprogram: program that manipulates another program.Metaprogramming is not a ne

原创 鳳凰涅磐 --- Phoenix 2 發佈預覽

首先,對於不熟悉 Phoenix 的讀者,先介紹一下 Phoenix 是什麼。Phoenix 的作者,Joel de Guzman,也就是 Boost.Spirit 的作者,在看到許多往 C++ 中引入 F

原创 簡單常識——關於string

toupper, tolower地球人都知道 C++ 的 string 沒有 toupper ,好在這不是個大問題,因爲我們有 STL 算法:string s("heLLo");transform(s.be

原创 通告:告別舊帳號,新帳號 ralphjzhang

我決定遷移到新的 CSDN 帳號:ralphjzhang,並盡力完善那邊的 blog,新的 blog 在http://blog.csdn.net/ralphjzhang/我會勤快一點更新這個 blog,感興

原创 Java Double-Checked Locking 已死,C++ 呢?

已經有衆多文章討論 double-checked locking 模式在 Java 下面無法正常工作,這裏先簡要的總結一下。根本原因在於 Java 的 memory model 允許所謂的 out-of-o