Is this nogc? dmd and gdc disagree
Kapps via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Feb 12 15:46:09 PST 2016
On Thursday, 11 February 2016 at 12:41:16 UTC, rcorre wrote:
> On Thursday, 11 February 2016 at 04:20:13 UTC, tsbockman wrote:
>> On Thursday, 11 February 2016 at 03:09:51 UTC, rcorre wrote:
>>> I recently tried compiling enumap with GDC, and found that it
>>> disagrees with DMD on whether a function is @nogc. Here's a
>>> semi-reduced test-case:
>>
>> Here's an @nogc version of `byKeyValue()`:
>>
>> @nogc auto byKeyValue() const {
>> static immutable keys = [EnumMembers!K];
>> return zip(keys[], _store[]);
>> }
>>
>> Using zip and slices guarantees that the structure returned
>> will be only 5*size_t.sizeof bytes, regardless of the types of
>> K and V.
>
> I'm on the DMD 2.070 release, so maybe its fixed in master.
> Either way, thanks for the suggestion!
> Somehow I didn't realize what I was doing was an
> over-complicated zip :)
You'll encounter this pretty often in Phobos I think. I really
don't think @nogc is ready, and tend to avoid it in my code.
Exceptions are a big reason for it, and lots of functions in
Phobos throw exceptions which prevents them from being used in
@nogc (barring ugly hacks). I don't want to discourage you before
you try it, but I feel like @nogc is not yet worth using until
something is done about issues such as exceptions, allowing
Phobos to properly be able to handle @nogc.
More information about the Digitalmars-d-learn
mailing list