Original signal_impl is not exception safe. If the 2nd emplace_back throws, signal state becomes inconsistent. This PR fixes signal_impl::add().
It also makes connection ids start from 1, not 2
Tried putting both id and function into the same vector (using std::pair), but that slows benchmark down too much. Merging this solution does not affect perfomance as much.
Original signal_impl is not exception safe. If the 2nd emplace_back throws, signal state becomes inconsistent. This PR fixes signal_impl::add(). It also makes connection ids start from 1, not 2