On Monday, 11 January 2021 at 12:32:42 UTC, Nick Treleaven wrote:
On Friday, 8 January 2021 at 14:07:29 UTC, Luhrel wrote:
Example a3 is straightforward the primary use case for staticArray:
    auto a3 = [1,2,3].staticArray;

I really don't like the `.staticArray` because it's non-esthetic. I don't know if it's really argument, mainly because it's very personal.

The worst thing about it is you have to import std.array, so probably people won't bother scrolling to the top to add the import and losing/bookmarking their place, and will just count the items themselves. When it was originally proposed, it was in object.d.

Yep, I introduced this DIP because I had to count the number of elements in my array (I'm lazy).


I think if the DIP proposed a literal syntax instead of a new variable declaration syntax, it would be much less of a burden to the compiler. I think we don't have any partial (variable) type inference syntax ATM.

I don't think that will be complicated to implement, the compiler already says "mismatched array lengths, 2 and 1".


Correct. I'll rewrite this example.
There should be a type conversion:

```
int[2] bar() { return [1,2]; }
long[$] a6 = bar();  // implicit conversion
static assert(is(typeof(a6) == long[2]));
```

Error: cannot implicitly convert expression `bar()` of type `int[2]` to `long[]`

Meh, gonna review my examples.


```
int[] bar() { return [1,2]; }
int[$] a6 = bar();  // conversion from int[] to int[2]
static assert(is(typeof(a6) == int[2]));
```
When manually replacing $ by 2, it now works as excepted.

Reply via email to