// // proxy.h // reflection // // Created by Sam Jaffe on 7/3/22. // Copyright © 2022 Sam Jaffe. All rights reserved. // #pragma once #include #include "reflection/forward.h" namespace reflection { template class Proxy { public: template Proxy(O & obj, T (O::*get)() const, void (O::*set)(T)) : data_((obj.*get)()), set_([&obj, set](auto & v) { (obj.*set)(v); }) {} ~Proxy() { set_(data_); } operator T &() { return data_; } private: T data_; std::function set_; }; }