void invokeQueued(CSignal<Arguments...>& signal, const identity<Arguments>&... args) { m_queue.emplace_back([=](){signal.invoke(args...);}); }
void invokeQueued(CSignal<FormalArguments...>& signal, std::index_sequence<Is...>, ActualArguments&&... args) { m_queue.emplace_back( [signal, t = std::tuple<std::decay_t<FormalArguments>...>(std::forward<ActualArguments>(args)...)] (){signal.invoke(std::get<Is>(t)...);}); }