First: This would have been the thing I was looking for in the MR.
On the last version I looked at - since no there is not BOOST_CLASS_EXPORT(class name) invoked, there are no indexed entries in the extended type info tables so get_key() should return null under any circumstances. Ok, but this is defined, correct? It is not undefined behaviour or anything else. Besides: And it is using standard types: "int" and "float", no classes. So what export is missing there? It tests nothing. It tests the construction and destruction of Boost.Serialization library types in a specific context.|||| Worse, it betrays the fact that the author of the test, and anyone who doesn't see a problem with it, have read neither the document nor the source code. I was going for a MWE: Minimal code to show the problem. https://www.boost.org/doc/libs/1_67_0/libs/serialization/doc/tutorial.html does NOT show, that BOOST_CLASS_EXPORT is required. I can change the code to something like: int i = 42;| boost::archive::text_oarchive(std::cout) & i;
And | |float i = 42;| boost::archive::text_oarchive(std::cout) & i; || ||And it would still crash.|| ||||
Rather than asking "What's ill conceived about it" better to ask - "What is this supposed to be testing?" From the description: This adds a test (from #105 https://github.com/boostorg/serialization/pull/105) which uses singletons in shared libraries linked against static boost. This crashes on termination. It simply **uses** singletons and crashes.