On 02/02/2021 15:01, Peter Dimov via Boost wrote:
Niall Douglas wrote:
I seem to be having difficulty communicating this to anyone here, so here's a godbolt:
But you've provided a definition for thirdpartylib_nothidden. This is not the case under discussion. The case under discussion is making BOOST_SYMBOL_IMPORT imply _VISIBLE, which translates to a default visibility attribute on the _declaration_ of thirdpartylib_nothidden.
If the Boost library where BOOST_XXX_DECL = BOOST_SYMBOL_VISIBLE is being applied has public headers which never, ever provide an implementation for any function, then BOOST_XXX_DECL = BOOST_SYMBOL_VISIBLE would not cause export of third party symbols in consuming libraries. I would be surprised if any such C++ library, let alone Boost library, exists, however. I would point out that if Boost.ProgramOptions fixes its exception types not being BOOST_SYMBOL_VISIBLE, the principle problem the OP reported goes away without further changes. Changing the ABI signature of the entire of Boost I think is a radical step needing public announcement for at least two Boost major releases before implementation. Niall