On Wednesday, 22 August 2018 at 14:30:39 UTC, XavierAP wrote:
Why
foo!bar!x
is not understood as
foo!(bar!x)
but instead gives an error "multiple ! arguments are not
allowed"?
Precisely because multiple "!" can never belong to the same
instantiation, why does the parser not understand without
needing brackets that the rightmost template should be nested
as the argument for the next one to the left?
Because it could be meant as the argument to some templates to
the left. Like
(foo!bar)!x
Sure, it would be a coincidence, if both will work. However,
templates are not something where you can simply imply the
associative property, I think.