#include #include #include #include struct counter { static unsigned count; static boost::mutex count_mutex; counter() { boost::lock_guard lk(count_mutex); ++count; } counter(counter const&) { boost::lock_guard lk(count_mutex); ++count; } ~counter() { boost::lock_guard lk(count_mutex); --count; } static unsigned get_count() { boost::lock_guard lk(count_mutex); return count; } void do_stuff(int) {} }; unsigned counter::count=0; boost::mutex counter::count_mutex; int main() { boost::shared_ptr c(new counter); boost::thread t(boost::bind(&counter::do_stuff,c,42)); std::cout<<"instances="<