#ifndef HOLDER_H
#define HOLDER_H

namespace MM
{

class Associated;

/**
 * Should
 * 1) call associated_.register_holder( * this )
 * 2) explicitly call associated_.free_holder( *this ) in destructor.
 * 3) implement void remove( Associated & item ) (without free_holder( *this ))
 */
class Holder
{
public:
    virtual ~Holder();
    virtual void remove( Associated & ) = 0;
//    virtual void remove( Associated & ) {}
};

}//MM

#endif //HOLDER_H

