template struct utils::PropertyByValue

#include <Property.h>

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

    C* instance;

    // construction

    PropertyByValue(C* instance);

    // methods

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

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

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