Hi,

I did face a problem with extern(C++) again. Now we are talkign about const member method for structs. Here is a sample code to trigger the error :

extern(C++) {
        struct Fail {
                void method() {}
                void method() const {}
        }
}

It will generate the error Error: symbol `_ZN4Fail6methodEv' is already defined.

Both method are mangled the same way, regardless of constness.

On a more general basis, interfacing to C++ is damn hard to do safely ! If you put asside some mangling bugs, some D choices make it more difficult than necessary.

Notably, it's very difficult to map a C++ POD class with a default constructor and copy constructor/assignement overload. struct doesn't allow for default constructor and copy constructor isn't mappable using posblit. final class imply an overhead, and are references types (so cannot be passed by value).

Reply via email to