http://www.cppblog.com/jackyxinli/archive/2011/01/10/138292.html http://wenku.baidu.com/view/4920641cc5da50e2524d7f7d.html