On Friday, 15 May 2020 at 14:55:07 UTC, Ali Çehreli wrote:
Additionally, the name of a template when used inside that template means that instance of it. So just say Foo. :)

struct Foo(A, B, C, size_t a, size_t b)
{
  Foo * p;
}

Ali

To expand a little, this works because a struct template such as the one above is actually syntax sugar for the following:

template Foo(A, B, C, size_t a, size_t b)
{
    struct Foo
    {
// refers to the inner `struct Foo`, not the outer `template Foo`
        Foo* p;
    }
}

The relevant parts of the language spec are:

- Aggregate Templates: https://dlang.org/spec/template.html#aggregate_templates - Eponymous Templates: https://dlang.org/spec/template.html#implicit_template_properties

Reply via email to