Complexity nomenclature

BLM768 via Digitalmars-d digitalmars-d at puremagic.com
Fri Dec 4 12:27:06 PST 2015


On Friday, 4 December 2015 at 18:21:41 UTC, Walter Bright wrote:
> I suggested in the pseudo namespaces thread using template 
> parameters to express characteristics, as in:
>
>     remove!(stable, linear)
>
> with sensible defaults so most of the time the user would just 
> use:
>
>     remove

The nice thing about this is that it can be easy to specify which 
complexities an operation supports.

---

void remove(complexity, T)(List!T list, size_t index) 
if(complexity >=
     Complexity.linear); //or however complexity objects work...

List l;
//...
l.remove(3);
l.remove!(Complexity.polynomial(2))(3);
l.remove!(Complexity.constant)(3);//fails; there's no template 
specialization for this case because complex < linear.




More information about the Digitalmars-d mailing list