Isn't it amazing how the . operator can cleanly replace :: and -> too?
Naively, I would think that making template instantiation look the same as a function call would be a desirable feature, with ambiguous calls needing to be resolved by the user.
templ!thing(a,b)
I would have thought that templ(thing)(a,b) would have been a good solution, as it is what is used in the declaration/definition side of templates, but this would have made removing redundant () not possible in UFCS expressions. templ<thing>(a, b)
because with that: templ!thing(a, b)
is it a function?, or are you calling thing's function?you can do:
templ!(thing)(a, b)
but did you mean?: templ!(thing(a, b))()
i personally always use !(), no matter what, and it's annoying to type, i don't want to waste time constantly trying to figure out what is what, it's mentally draining