http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html
http://www.cppblog.com/oosky/archive/2006/07/06/9486.html
http://www.matrix67.com/blog/archives/115/