Documentation: is it intentional that template constraints are displayed after the signature?

Paul Backus snarwin at gmail.com
Fri Nov 1 16:33:55 UTC 2019


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


More information about the Digitalmars-d-learn mailing list