http://www.cnblogs.com/Wizmann/archive/2012/06/22/2558751.html http://www.cppblog.com/Yuan/archive/2010/09/02/125640.html?opt=admin