Boost logo

Boost :

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.

--Johan

JOAQUIN M. LOPEZ MUÑOZ wrote:
> Hi John,
>
>> De: boost-bounces_at_[hidden] [boost-bounces_at_[hidden]] En nombre de John Maddock
>> [john_at_[hidden]]
>> 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:
>
> http://svn.boost.org/svn/boost/sandbox/flyweight/libs/flyweight/doc/tutorial/configuration.html#intermodule_holder
>
> Component code:
>
> http://svn.boost.org/svn/boost/sandbox/flyweight/boost/flyweight/intermodule_holder.hpp
>
> svn.boost.org seems to be down at the moment. You can download a Boost.Flyweight
> package from
>
> http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=Patterns
>
> Best,
>
> 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