http://www.codeproject.com/cpp/cppfaq10dec04-23jan05.asp