> How this is better then asserting it somewhere before actual matching?

It's not "better" - it's simply more possible! If I don't match - I can't get match results. If I don't have match results - I can't use them as function arguments. If I don't have function arguments - I can't call the function. If I don't call the function - I can't tell if it throws.

> Just add all of the static checks to a small variadic function and call it at CTFE ?

What for? Stacktrace for compilation errors make those checks redundant, which means it's a waste of LoC and compilation time to do them. Since we don't do them, it doesn't really matter *how* we *don't* do them.