[Issue 22951] Dtor missing from generated C++ header

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Mar 29 07:58:30 UTC 2022


https://issues.dlang.org/show_bug.cgi?id=22951

Dlang Bot <dlang-bot at dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #2 from Dlang Bot <dlang-bot at dlang.rocks> ---
dlang/dmd pull request #13914 "Fix 22951 - Emit non-extern (C++) destructors as
private members" was merged into master:

- 11be8a63105cb5e43b4a2c318260bafb8456af32 by MoonlightSentinel:
  Fix 22951 - Emit non-extern (C++) destructors as private members

  Destructors not marked as `extern (C++)` aren't accessible from C++
  due to the D name mangling. The header generator used to skip `extern(D)`
  destructors, allowing C++ code that violated RAII guarantees.

  Declaring the constructors as `private` members ensures that any
  instance that would need to be destroyed on the C++ side causes a
  compiler error (rather than a linker error due to missmatched mangling).

  Renamed the helper function `checkVirtualFunction` because it now also
  handles other types of functions.

https://github.com/dlang/dmd/pull/13914

--


More information about the Digitalmars-d-bugs mailing list