#define DELEGATE(OBJ, METHOD, METHOD_AS) \ template decltype(auto) METHOD_AS(Args &&...args) { \ return OBJ->METHOD(std::forward(args)...); \ } #define DEFINE_SETTER(METHOD, PROPERTY) \ template void METHOD(Arg val) { PROPERTY = val; } #define DEFINE_GETTER(METHOD, EXPR) \ template decltype(auto) METHOD() { return EXPR; }