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