[Issue 15812] New: static struct inside extern(C++) class cannot be used as key to associative array
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Sat Mar 19 02:19:28 PDT 2016
    
    
  
https://issues.dlang.org/show_bug.cgi?id=15812
          Issue ID: 15812
           Summary: static struct inside extern(C++) class cannot be used
                    as key to associative array
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Windows
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: bugzilla at digitalmars.com
Given:
extern (C++) class C {
    struct S {
        int ti;
        this(int ti) {
            this.ti = ti;
        }
        size_t toHash() const @safe nothrow {
            return ti;
        }
        bool opEquals(ref const S s) @trusted const {
            return s.ti == ti;
        }
    }
}
alias SS = C.S;
void main() {
    int[SS] aa;
    auto s = SS(3);
    aa[s] = 4;
}
fails with:
foo10.d(22): Error: AA key type S should have 'size_t toHash() const nothrow
@safe' if opEquals defined
but it works if the extern (C++) is removed.
--
    
    
More information about the Digitalmars-d-bugs
mailing list