This issue is a list of bugs that affects us. Some of them are just comments at this point, and I will add a link to bugzilla once properly filled.
Confirmed:
Documentation (https://dlang.org/spec/cpp_interface.html) is obsolete: Does not contain the extern(C++, "ns") syntax (issue), mentions that ctor / copy ctor / operator overloads can't be called (it's wrong), etc... We have a related issue, and addressing it might have a large overlap with overhauling the official documentation.
I consolidated everything in the first post and removed the 6 or so comments. There have been quite a few improvements we made, and there's quite a few left to do.
This issue is a list of bugs that affects us. Some of them are just comments at this point, and I will add a link to bugzilla once properly filled.
Confirmed:
extern(C++, "ns")
syntax (issue), mentions that ctor / copy ctor / operator overloads can't be called (it's wrong), etc... We have a related issue, and addressing it might have a large overlap with overhauling the official documentation.std::string
)~@safe
extern(C++, class|struct)
being ignored~ Fixed__traits(isReturnOnStack)
is completely brokenref
+delegate
might lead to memory corruption, especially with FibersException.toString()
doesn't print a stack trace on LDC+Alpine (related)Exception.toString()
needs a compiler hack on OSXException.toString()
relies onbacktrace_symbols
which causes issues with frame pointerException.toString()
is mind-boggingly slowstd::make_shared
)~ Will be fixed in v2.095.0@safe
issues withiota
+array
sourcePath
does not behave as documented (previously #1326).Issues that blocks improvements:
-checkaction=context
(needs rvalue refs)~-preview=rvaluerefparam
doesn't work withT.init
~ Use-preview=in
instead-preview=rvaluerefparam
doesn't work with template deduction~ Use-preview=in
instead-preview=rvaluerefparam
doesn't work with copy ctors and does a dumb copy~ Use-preview=in
insteadUnconfirmed:
Not blocking but future-relevant:
init
.scope immutable
class (e.g. ConsensusParams)Other:
static foreach
+ extern(C++) => ICEextern(D)
type andextern(C++)
functionsextern(C++)
(but not only)