Description
#2502 avoids using std::string
directly in the separately compiled implementation. This is required, because translation units compiled into import library cannot use std::string
(and other types with ABI dependent on containers/iterators debug level).
As a result, function pointer types _Stacktrace_string_fill
and _Stacktrace_string_fill_callback
are used for type erasure. These function pointers complicate the implementation. Mostly it is an issue for understanding the implementation, although it causes some code bloat as well.
In the next ABI-breaking release, the implementation should move to the main library, and there should be no need to avoid std::string
in it - we compile all the necessary flavors of the main library to support the variety of containers/iterators debug levels.
vNext note: Resolving this issue will require breaking binary compatibility. We won't be able to accept pull requests for this issue until the vNext branch is available. See #169 for more information.