$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [log] [asio] Conflicting default configs
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2015-03-30 20:41:56
On 31 Mar 2015 at 1:54, Andrey Semashev wrote:
> 1. Introduce an inline ABI namespace in Boost.ASIO, much like the one I have 
> in Boost.Log. The namespace name would depend on 
> BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION and other macros that affect 
> binary compatibility. This would be my preferred solution, although I'm not 
> sure how fast and easy it can be implemented.
Why don't you just use standalone ASIO internally? It has a different 
ABI, and I believe is expected to not interact with Boost.ASIO.
The internal copy can be generated using Chris's special "include all 
of ASIO" magic file. Just fire it through a bit of python which 
implements only the #include directive or use a STL excluding 
preprocessor to generate a single file including all of standalone 
ASIO.
> 2. Remove symbol visibility enforcement from Boost.ASIO, or at least make it 
> optional. That way I could encapsulate my private copy of Boost.ASIO in 
> Boost.Log binaries.
You'd still run into ABI mismatch if the end user uses a different 
Boost ASIO version to you which is not uncommon (users like to pin 
the version of Boost and Boost.ASIO separately). The only valid 
visibility of an internal ASIO is hidden, but then you have to be 
real careful you never allow Log to be used as anything but a shared 
object else you'll cause all ASIOs to be hidden too as hidden 
visibility is sticky.
Niall
-- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/