www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 15812] New: static struct inside extern(C++) class cannot be


          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 puremagic.com
          Reporter: bugzilla digitalmars.com


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.

Mar 19 2016