http://www.cppblog.com/deane/articles/120243.htmlhttp://blog.csdn.net/segen_jaa/article/details/7550317