dropping parentheses on template instantiation

Sean Kelly sean at invisibleduck.org
Sun Oct 5 12:35:54 PDT 2008


Andrei Alexandrescu wrote:
> I just realized something different. After making an informal review of 
> some code, I saw that a large percentage of template instantiations only 
> need ONE argument.
> 
> This makes me think, with the old "!" notation, parentheses could be 
> dropped entirely without prejudice:
> 
> auto covariance = Matrix!real(n, n);
> auto normalized = SparseVector!double(n);
> 
> and so on.
> 
> To the unbridled joy of the enemies of the Sad Pirate, the dot won't 
> work for template instantiation because without the parentheses it DOES 
> engender ambiguity.
> 
> Now say we take the following route:
> 
> 1) We find something different from shouting
> 
> 2) We drop the parentheses for 1 argument

It's a bit off-topic, but why are we required to supply an empty 
template list when instantiating a type that has all defaulted template 
arguments?  ie.

     class C( T = int, U = int ) {}

     auto c = new C!();
     auto d = new C; // why can't it be this?

I asked about this a while back but never got an answer.


Sean



More information about the Digitalmars-d mailing list