Is there any interest in a small observable_value library?

I have an idea of a small class which bundles a value and a way of listening to changes in it. I find this concept very useful when developing event-driven applications and wonder if there is any interest in a small library. My idea of how this could be implemented builds on top of boost::slots and signals. The interface could look something like this: template <typename T> class observable_value { public: typedef typename boost::signal<void (const T&)>::slot_type slot_type; observable_value(); explicit observable_value(const T& t); // set value and call observers if there was a change observable_value<T>& operator=(const T& value); operator const T& () const; boost::signals::connection connect(const slot_type& slot) const; void disconnect(const slot_type& slot) const; // call observers only if the value was changed observable_value<T>& operator+=(const T& t); ... other operators }; User code might look like this: class SomeClass { const observable_value<bool>& is_something() const; const observable_value<int>& get_count() const; }; ADrawableClass create_ok_cancel_dialog(boost::function<void> onOk, boost::function<void> onCancel, const boost::observable_value<bool>& okEnabled); A reference implementation and a small visual studio example can be found at http://svn.boost.org/trac/boost/browser/sandbox/observable_value Give me feedback :) Do you think this is useful enough to become a small library or be added to boost signals and slots? Best Regards, Johan Torp
participants (1)
-
Johan Torp