Append const to array
Jonathan M Davis via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Sep 20 15:38:33 PDT 2016
On Tuesday, September 20, 2016 22:23:08 Yuxuan Shui via Digitalmars-d-learn
wrote:
> struct A {
> ulong[] x;
> }
> struct B {
> ulong x;
> }
> void main() {
> B[] b;
> const(B) xx = B(1);
> b ~= xx; // Works
>
> A[] c;
> const(A) yy = A([1]);
> c ~= yy; // Does not
> }
>
> What gives?
const(A) means that the ulong[] inside is const(ulong[]). When yy is copied
to be appended to c, it goes from const(A) to A, which means that
const(ulong[]) would need to be sliced and and set to ulong[], which would
violate const, because it would mean that the last element in c could mutate
then elements of its x, which would then mutate the elements in yy.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list