Request for a more powerful template specialization feature

data pulverizer via Digitalmars-d digitalmars-d at puremagic.com
Fri Jul 14 16:50:05 PDT 2017


On Friday, 14 July 2017 at 23:04:48 UTC, Stefan Koch wrote:
> One important characteristic about constraints, is that they 
> are not bound to types.
> Also they can from conjunctions and disjunctions.
> Combined with ctfe they are very flexible and powerful.
>
> I do not know how you would do the same with specializations.
> Then again being unfamiliar with template-specializations I 
> might be overlooking something.

True ... it doesn't have to be specializations or constraints, as 
you have said constraints are important for conjunctions and 
disjunctions. I should not have said "why are constraints better 
than specializations". However when you are dealing with a know 
finite set of know types or constructs - which I do frequently, 
it is useful to be able to be able to specify the exact behaviour 
for individuals and different groups clearly and succinctly. For 
instance when writing mathematical algorithms that should apply 
differently to different constructs, its much easier to say "do 
this for that specific construct" and "do something else for some 
group" and so on without having to repeat negating cases.

A practical case might be dealing with two library "kinds" each 
having around 8 possible type specifications where some 
associated methods are related. Sometimes methods will be the 
same for combinations of types both within each kind and across 
both kind combinations. Specializations that allow multiple 
values are really good for these cases.

I currently  use string mixins to code-gen my template 
specializations - its a good-enough but visually inelegant 
solution.



More information about the Digitalmars-d mailing list