What exactly is the use-case for Template This Parameters?

Steven Schveighoffer schveiguy at yahoo.com
Mon Feb 18 15:21:13 PST 2013


On Mon, 18 Feb 2013 17:14:54 -0500, Andrej Mitrovic  
<andrej.mitrovich at gmail.com> wrote:

> http://dlang.org/template.html#TemplateThisParameter
>
> That's hardly a descriptive example, so in what context is the feature
> useful? Some code snippets would be welcome so we can update the page
> with a nicer and more useful example.

I actually use it in dcollections :)

What it's nice for is simulating covariance with interface templates:

interface Addable(T)
{
   auto addAll(this R)(T[] stuff)
   {
      foreach(t; stuff) add(t);
      return cast(R)this;
   }

   Addable add(T t);
}


class List(T) : Addable!(T)
{
    List add(T t) { ... }

    // don't need to redefine addAll
}

This became important when operators were forced to be templates.

-Steve


More information about the Digitalmars-d-learn mailing list