#include <shared_value_attribute.hpp>
struct SharedValue: public std::enable_shared_from_this< SharedValue >
{
// fields
T value = {};
// construction
SharedValue();
SharedValue(const T& value);
// methods
void addAttribute(std::weak_ptr<SharedValueAttribute> attribute);
std::vector<std::weak_ptr<SharedValueAttribute>>& getAttributes();
};