template struct FFRtTypedEventHandler : FFComObject, IAgileObject> { template explicit FFRtTypedEventHandler(F&& f) : cb_func(std::forward(f)) {} HRESULT STDMETHODCALLTYPE Invoke(TSender_abi sender, TArgs args) override { if (!cb_func) return S_OK; return cb_func(sender, args); } private: std::function cb_func; };