[Issue 22951] Dtor missing from generated C++ header
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Mar 29 06:56:13 UTC 2022
https://issues.dlang.org/show_bug.cgi?id=22951
Dlang Bot <dlang-bot at dlang.rocks> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |pull
--- Comment #1 from Dlang Bot <dlang-bot at dlang.rocks> ---
@MoonlightSentinel created dlang/dmd pull request #13914 "Fix 22951 - Emit
non-extern (C++) destructors as private members" fixing this issue:
- 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