According the design decision for the C++ client, I would recommend using the boost libraries for smart pointers and threads. See www.boost.org <http://www.boost.org/> .
Boost has become a well-know modern C++ base framework made with conformance to the C++ Standard Template Library. Most of the boost libraries use the "boost license" which is compatible with the BSD license. The purpose of boost libraries is to extend the standard C++ library with modern concepts such as thread programming, garbage collecting etc. There is also a socket implementation built on boost (see http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSock et). /David
