$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Calderon Hector (hhcalderon_at_[hidden])
Date: 2006-03-24 06:54:58
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.