They use templates like Signal0<>, Signal1<T1>, Signal2<T1,T2>, etc. with fixed argument length instead of a more uniform solution like variadic templates.
The code in the library is pretty old and I suppose that an update with regards to C++11/14/17 would make it much better in every regard.