| Home | Libraries | People | FAQ | More

## Class trackable

boost::signals2::trackable — Provided to ease porting for code using the boost::signals::trackable class from the original Boost.Signals library.

## Synopsis

    // In header: <boost/signals2/trackable.hpp>

    class trackable {
    public:
      // construct/copy/destruct
      trackable();
      trackable(const trackable&);
      trackable& operator=(const trackable&);
      ~trackable();
    };

## Description

Use of the `trackable` class is not recommended for new code. The `trackable` class is not thread-safe since `trackable` objects disconnect their associated connections in the `trackable` destructor. Since the `trackable` destructor is not run until after the destructors of any derived classes have completed, that leaves open a window where a partially destructed object can still have active connections.

The preferred method of automatic connection management with Boost.Signals2 is to manage the lifetime of tracked objects with `shared_ptr`s and to use the signals2::slot::track method to track their lifetimes.

The `trackable` class provides automatic disconnection of signals and slots when objects bound in slots (via pointer or reference) are destroyed. `trackable` class may only be used as a public base class for some other class; when used as such, that class may be bound to function objects used as part of slots. The manner in which a `trackable` object tracks the set of signal-slot connections it is a part of is unspecified.

The actual use of `trackable` is contingent on the presence of appropriate visit_each overloads for any type that may contain pointers or references to trackable objects.

### `trackable` public construct/copy/destruct

1.     trackable();

   Effects: | Sets the list of connected slots to empty.
   Throws: | Will not throw.

2.     trackable(const trackable& other);

   Effects: | Sets the list of connected slots to empty.
   Throws: | Will not throw.
   Rationale: | Signal-slot connections can only be created via calls to an explicit connect method, and therefore cannot be created here when trackable objects are copied.

3.     trackable& operator=(const trackable& other);

   Effects: | Sets the list of connected slots to empty.
   Returns: | `*this`
   Throws: | Will not throw.
   Rationale: | Signal-slot connections can only be created via calls to an explicit connect method, and therefore cannot be created here when trackable objects are copied.

4.     ~trackable();

   Effects: | Disconnects all signal/slot connections that contain a pointer or reference to this trackable object that can be found by visit_each.