No need for a dispatching macro, the usual solution in c++03 was to have a template with a fixed maximum arity like this:<p>template&lt;class T1 = default_, class T2 = default ..., class T10 = default_&gt; struct Signal;<p>where default is a placeholder type, and then have it dispatch internally to the correct Signal&#x2F;N&#x2F; via template specialization.<p>The template specialization themselves were generated either via preprocessor metaprogramming or by an external tool.