On 2012-04-09 19:56, Steven Schveighoffer wrote:
Then c.data cannot be the same reference as foo.data.Counter-case: void bar( const Foo foo) { auto c = foo.clone(); // assume this works; *(cast(int*)c.data) = 6; // note even though I'm casting, there is no removal of const, so this should be defined behavior. } immutable int i = 5; const foo = new Foo(&i); bar(foo); assert(i == 5); // oops, it's 6! In that case, you have to clone the data as well. -Steve
Ok, I see, thanks. -- /Jacob Carlborg
