$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Raymond Haeb (ray.haeb_at_[hidden])
Date: 2008-04-08 20:02:05
Hello,
namespace bi = boost::intrusive;
typedef bi::set<relation, bi::constant_time_size<false> > set_type;
set_type set;
class relation:
        private boost::noncopyable,
        public bi::set_base_hook<optimize_size<true> >
{
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