So, what would happen if boost::system uses aliases to std if we have a modern >= C++11 compiler?! We would have no dependency to libboost_system.so So it's like a header only library. Linking to libstdc++ (or libc++, ...) is always necessary - so no issue. That would be really cool. E.g. using boost::beast with boost::asio, but no runtime dependency to boost libraries. Mike... Am 10.10.2017 um 21:30 schrieb Andrey Semashev via Boost:
On 10/10/17 22:27, Mike Gresens via Boost wrote:
Am 10.10.2017 um 10:21 schrieb Groke, Paul via Boost:
-----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Andrey Semashev via Boost Sent: Dienstag, 10. Oktober 2017 09:32 Subject: Re: [boost] [system] Header-only Boost.System by default ?
It will have the same address as long as get_basic_error_category() is called within the same module (dll, so, exe, etc.) If this function is compiled in different modules then there will be multiple instances of the category with different addresses.
On Linux and probably other Unix-like systems this can be solved by exporting the category instance, which is the default. I don't think this can be done on Windows - you'd have to export get_basic_error_category for that instead and it will make this code less friendly to header-only libraries. And even if the "same address" thing was solvable (which I think it is, although not pretty and it would require interface changes), there is the problem with unloading DLLs/SOs. You'd have to pin every module that contains error categories. Which IMO is a side effect that you really don't expect and want, especially from a header-only library.
How does libstdc++ (>= C++11) solve these problems?
libstdc++ is not header-only, you link with libstdc++.so.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost