http://d.puremagic.com/issues/show_bug.cgi?id=9528
--- Comment #3 from [email protected] 2013-03-10 05:38:51 PDT --- (In reply to comment #2) > The problem is that appender is making the double assuption that unqual > implies > assignability, and that copyiable implies assignability (empace ony requires > copyability). Finally, it makes the wrong assumption that you can call > opAssign > on something that is not yet initialized (append makes raw allocations). > Amongst a few other bugs mind you. > > There is a lot of broken in appender that I've tried to fix before, but it is > very tricky because: > 1) It is a ritical function that is used for strings, and needs to support > CTFE. > 2) Anything that fixes emplace must not slow it down. > 3) It should be calling emplace instead of opAssign but emplace is currently > broken for exactly the same reasons! > > I should maybe try to fix it in smaller incremental steps, but it is very hard > to knowingly deliver code that you know is broken, and know how to fix. Possible solution for this: static if (__traits(compiles, { _data.arr.ptr[len] = cast(Unqual!T) item; })) { _data.arr.ptr[len] = cast(Unqual!T) item; } else { memcpy(&_data.arr.ptr[len], cast(Unqual!(T)*) &item, T.sizeof); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
