
I think boost::thread will beneficiate from a third constructor: thread::thread( boost::shared_ptr< boost::function0<void>& > ) 1. This constructor will allow to use functors that are heavy to copy or simply non - copiable. 2. This contructor will also allow polymorphic functors. For example, in the following code, the copying of the functor destroys its polymorphism (there is not any 2 printed in the output) : #include <boost/thread/thread.hpp> #include <iostream> class A { public: unsigned int m_a; A( unsigned int a_a ) : m_a( a_a ) {} void Begin() {boost::thread ( * this );} void operator ()() {foo(); std::cout << m_a;} virtual void foo() {m_a = 3; std::cout << m_a;} }; class B : public A { public: B( unsigned int a_a ) : A( a_a ) {} void foo() {m_a = 2; std::cout << m_a;} }; int main() { B b( 7 ); b.Begin(); std::cout << b.m_a; system("pause"); return 0; } ++Hector C. ---------------------------------- --------------------------------- New Yahoo! Messenger with Voice. Call regular phones from your PC and save big.