http://www.cppblog.com/ant/archive/2007/09/07/31445.html http://www.cppblog.com/ant/archive/2007/09/07/31786.html