Thread overview | |||||
---|---|---|---|---|---|
|
June 08, 2010 std.array.Appender with fixed size arrays | ||||
---|---|---|---|---|
| ||||
Hi, While trying to get some things to build in D2, i noticed that the code: //////////////////// import std.array; void main (string[] args) { string s; auto app = appender(&s); app.put(['a', 'b']); } ///////////////////// works, but if it's changed to; char[2] tmp = ['a', 'b']; app.put(tmp); then it fails. Seems to be because char[2] isn't a forward range, so it doesn't match the version of put that takes a range. Is this a bug? |
June 08, 2010 Re: std.array.Appender with fixed size arrays | ||||
---|---|---|---|---|
| ||||
Posted in reply to Richard Webb | Richard Webb:
> char[2] tmp = ['a', 'b'];
> app.put(tmp);
>
> then it fails. Seems to be because char[2] isn't a forward range, so it doesn't match the version of put that takes a range.
>
> Is this a bug?
Maybe it's not a bug, but it's a limitation. With some more work on the Appender then this limit can be removed. If you want you can fix the problem and submit a patch in bugzilla. Probably it's not too much hard to do.
Bye,
bearophile
|
June 08, 2010 Re: std.array.Appender with fixed size arrays | ||||
---|---|---|---|---|
| ||||
Posted in reply to Richard Webb | Richard Webb wrote:
> Hi,
>
> While trying to get some things to build in D2, i noticed that the code:
>
> ////////////////////
> import std.array;
>
> void main (string[] args)
> {
> string s;
> auto app = appender(&s);
> app.put(['a', 'b']);
> }
> /////////////////////
>
> works, but if it's changed to;
>
> char[2] tmp = ['a', 'b'];
> app.put(tmp);
>
> then it fails. Seems to be because char[2] isn't a forward range, so it
> doesn't match the version of put that takes a range.
>
> Is this a bug?
The problem is due to a relatively recent change to D2: the size of fixed sized arrays may not be changed. (I like how it fits their name. :) )
Ali
|
Copyright © 1999-2021 by the D Language Foundation