// Inspired by skypjack/entt signal handlers namespace clanguml::t00044 { template class sink; template struct signal_handler; template class sink> { using signal_t = signal_handler; public: sink(signal_t &sh) : signal{&sh} { } template CastTo *get_signal() { return (CastTo *)signal; } private: signal_t *signal; }; template struct signal_handler { }; template sink(signal_handler &) -> sink>; signal_handler int_handler; struct R { sink> sink1{int_handler}; }; } // namespace clanguml::t00044