Hello,
namespace bi = boost::intrusive;
typedef bi::set set_type;
set_type set;
class relation:
private boost::noncopyable,
public bi::set_base_hook
{
public:
boost::uuid const &get_uuid() const { return uuid_; }
void change_uuid( boost::uuid const& uuid )
{
unlink();
uuid_ = uuid;
// TODO: reinsert it with the new uuid,
// or leave it linked and find a way to tell the set,
// that the value has been changed and the tree is // invalid
}
struct uuid_cmp
{
bool operator()( boost::uuid const &id, relation const &rel ) const {
return id < rel.get_uuid(); }
bool operator()( relation const &rel, boost::uuid const &id ) const {
return rel.get_uuid() < id; }
};
bool operator<( relation const &a ) const { return uuid_ < a.uuid_; }
private:
boost::uuid uuid_;
}
So the question is in the comment: Is there a way to change the value of
an element of a set or insert an (new) element in a set, without having
a pointer to the set?
TIA,
Raymond