container vs standard array

Nick Treleaven nick at geany.org
Tue Sep 19 19:57:34 UTC 2023


On Tuesday, 19 September 2023 at 06:35:01 UTC, JG wrote:
> On Tuesday, 19 September 2023 at 00:34:01 UTC, vino wrote:
>>  //auto a = Array!string("Aname");           // throws error
>>  auto b = Array!char("Bname");             	// works
>>  auto c = Array!string("Aname", "Bname");  	// works
...
> Looks to me like when it receives a single range it expects the 
> elements of that range to match the type.

Yes, the first overload fails to match because U is inferred as 
immutable(char) rather than string:

     this(U)(U[] values...)
     if (isImplicitlyConvertible!(U, T))

This is because a single array can be passed to a typesafe 
variadic parameter rather than elements of that array type. And 
then immutable(char) doesn't convert to string.

I think a non-variadic overload could be added to make it work as 
expected.


More information about the Digitalmars-d-learn mailing list