Yup, that works.
For anyone looking to spot the difference, here is original signature:
template defineIndex*(name, source: typedesc, extractIt, cmpAB: untyped)
{.immediate.} = ...
When you just remove the immediate, it breaks. Here is the working signature:
template defineIndex*(name, source, extractIt, cmpAB: untyped) = ...
The difference is that _[all](https://forum.nim-lang.org/postActivity.xml#all)
of the arguments are untyped, versus using typedesc for the first two arguments.
@Araq, if you've got a moment (or anyone else that can offer details): why does
this work?