Just take the same arguments as the "signal" function,
something like:
template signal (string name, string protection, Args...)
{
mixin(signalImpl!(Args)(name, protection));
}
Nice. But you trade it for protection having a default value,
making the syntax more verbose in the general case.
If that works, why do you have the option to specify the
protection at all?
So you can have a different protection for the full signal
implementation and for the restricted part.
BWT, shouldn't that assert be static?
Well the function is executed at compile time, but protection is
still a "runtime" argument (so to speak) so I guess the answer is
no.
Best regards,
Robert