template struct utils::Property

#include <Property.h>

template <typename C, typename T, T(C::*)() const getter, void(C::*)(const T&) setter>
struct Property {
    // fields

    C* instance;

    // construction

    Property(C* instance);

    // methods

    operator T() const;
    Property& operator=(const T& value);

    template <typename C2, typename T2, T2(C2::*)() getter2, void(C2::*)(const T2&) setter2>
    Property& operator=(const Property<C2, T2, getter2, setter2>& other);

    Property& operator=(const Property& other);
};