参考:
             http://www.cppblog.com/notonlysuccess/archive/2009/05/12/82614.html