Why can't templates use tuples for for argument types?

BCS ao at pathlink.com
Tue Jul 17 15:38:25 PDT 2007


Reply to Jarrett,

> "BCS" <ao at pathlink.com> wrote in message
> news:ce0a3343bf268c99691d2e8b71a at news.digitalmars.com...
> 
>> How did you hack my system!!!! I'm sure you copied that right off my
>> hard drive }:-|
>> 
>> <g>
>> All joking aside, I keep running into that so often that I want a
>> cleaner
>> way to do it. I want the proper usage documented in the code, not the
>> comments and the asserts. I want to be able to talk about things by
>> name
>> without having to make aliases. It's a minor point but...
> The issue is that there's currently no way to specify that a template
> parameter can be 'anything'.  T means it's a type, alias T means it's
> a symbol, and <sometype> T means it's a value.  If you could specify
> that a parameter could take anything, this would be trivial.  How
> about using .. - it means it's kind of like a tuple, but shorter ;)
> 
> template Foo(A.., B...)
> {
> }
> 
> Or, take a page from Erlang:
> 
> template Foo(A | B...)
> {
> }
> 
> In this case, A can be anything, and not just a type, because it's on
> the left of a bar.  An issue with this, however, is that you can't
> have a type parameter.
> 

I like the ".." my thought was allow tuples anywhere, but if they aren't 
at the end, they take one and only one thing.

template Foo(A..., B...)

However it seems a bit messy with the location sensitive semantics.




More information about the Digitalmars-d-learn mailing list