From: Johan Råde (rade_at_[hidden])
Date: 2008-03-05 15:58:51
I discussed Joaquin's solution with John, in a private mail.
John told me that Joaquin's solution is sound,
but depends on Boost.Interprocess.
It is a very clever solution.
And it is the first solution I have ever seen to this problem.
But to me it seems undesirable to have a light-weight library,
such as the floating point utilities, depend on a heavy-weight
library, such as Boost.Interprocess.
So I think that I'll refrain from adding manipulators to the facet
classes in the floating point utilities library.
It is a bit alarming that other Boost libraries have defined manipulators
using methods that will fail when passing iostream objects
between different DLL's on Windows.
JOAQUIN M. LOPEZ MUÑOZ wrote:
> Hi John,
>> De: boost-bounces_at_[hidden] [boost-bounces_at_[hidden]] En nombre de John Maddock
>> Enviado el: domingo, 02 de marzo de 2008 14:12
>> Para: Boost mailing list; rade_at_[hidden]
>> Asunto: [boost] call_once, headers and shared libraries
>> This came up in the floating point utilities review without a good answer,
>> but it's a general problem that's in need of one, so let me try again....
>> Suppose we have some global data that needs to be initialised, the obvious
>> answer is to use boost::call_once to ensure that it gets initialised exactly
>> once. But... what happens if this is used in a header to initialise some
>> static variable inside a template instance, and that template is used in
>> more than one shared library/dll? At least on Windows I'm assuming that
>> each dll gets it's own instance of the template, and we end up with two
>> different versions of the static data with unpleasant results. Other than
>> "don't do that", does anyone have a design or usage pattern that sidesteps
>> this issue?
> Boost.Flyweight's intemodule_holder is designed to solve precisely this issue.
> More info on this component at:
> Component code:
> svn.boost.org seems to be down at the moment. You can download a Boost.Flyweight
> package from
> Joaquín M López Muñoz
> Telefónica, Investigación y Desarrollo
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk