Nested template arguments

Steven Schveighoffer schveiguy at gmail.com
Thu Aug 23 15:15:23 UTC 2018


On 8/22/18 11:37 AM, Alex wrote:
> On Wednesday, 22 August 2018 at 15:18:29 UTC, XavierAP wrote:
>> On Wednesday, 22 August 2018 at 14:48:57 UTC, Alex wrote:
>>>
>>> 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.
>>
>> Of course there isn't an associative property... But I was thinking 
>> that without brackets the parser could fall back to whatever default 
>> "left to right" precedence, as would happen with operators, which 
>> needn't be associative either.
> 
> Ah... ok. Got your idea. No. This isn't possible because some symmetry 
> of the operator is implied.
> 
> https://wiki.dlang.org/Operator_precedence
> 
> Chaining is explicitly not allowed, like in comparison operators :)

Note that Instantiate in std.meta exists to overcome this limitation:

Instantiate!(foo!bar, x);

-Steve


More information about the Digitalmars-d-learn mailing list