https://blog.csdn.net/codeswarrior/article/details/81906367
http://www.cppblog.com/vici/archive/2011/09/05/155103.html