Pair literal for D language

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Sat Jun 28 14:12:05 PDT 2014


On 06/28/2014 06:11 PM, Mason McGill wrote:
> On Saturday, 28 June 2014 at 09:15:29 UTC, Dicebot wrote:
>> On Friday, 27 June 2014 at 22:01:21 UTC, Mason McGill wrote:
>>> I like DIP54 and I think the work on fixing tuples is awesome, but I
>>> have 1 nit-picky question: why is it called "TemplateArgumentList"
>>> when it's not always used as template arguments?
>>>
>>>  void func(string, string) { }
>>>
>>>  TypeTuple!(string, string) var;
>>>  var[0] = "I'm nobody's ";
>>>  var[1] = "template argument!";
>>>  f(var);
>>>
>>> Why not a name that emphasizes the entity's semantics, like
>>> "StaticList"/"ExpandingList"/"StaticTuple"/"ExpandingTuple"?
>>
>> Because it is defined by template argument list and has exactly the
>> same semantics as one. And semantics are unique and obscure enough
>> that no other name can express it precisely.
>
> Understood. I was just expressing my initial impression: that it seemed
> strange that a symbol declared as a `TemplateArgumentList` was neither
> passed nor received as template arguments.

That would be strange, but it isn't.

TypeTuple!(string, string) var;
          ^~~~~~~~~~~~~~~~~
          passed here


alias TypeTuple(T...)=T; <- aliased here
                 ^~~~
                 received here

Hence:

TypeTuple!(string, string) var;
^~~~~~~~~~~~~~~~~~~~~~~~~~
this is actually the template argument list that was passed

In any case, I just call it 'Seq'.


More information about the Digitalmars-d mailing list