On Friday, 1 November 2019 at 15:29:24 UTC, Ali Çehreli wrote:
On 11/01/2019 04:09 AM, berni44 wrote:

> What I don't understand is the 4th version with two extra
parameters.
> Here the documentation lacks an explanation, what this is
good for.

I went to the documentation by clicking "View source code" and scrolled a bit and found this:

https://github.com/dlang/druntime/blob/v2.088.1/src/object.d#L590

void destroy(bool initialize = true, T : U[n], U, size_t n)(ref T obj) if (!is(T == struct))
{
    foreach_reverse (ref e; obj[])
        destroy!initialize(e);
}

Apparently, it's the version for static arrays. However, I don't think the template constraint is doing anything there because if T matches a static array (of the form U[n]), then T is not a struct anyway.

Ali

`T : U[n]` could also be matched by a struct with an `alias this` to a static array member.

Example: https://run.dlang.io/is/NgRU94

Reply via email to