Boost logo

Boost :

From: Fernando Cacciola (fcacciola_at_[hidden])
Date: 2002-03-07 09:36:28


I just ugraded to boost 1.27.0... (I use boost heavily at production code so
I need to upgrade carefully)

As I reported before, Borland cannot create a precompiled headers if static
data is contained in the header to precompile.

There are at least two boost libraries which declares static data: tuples
and bind.

I noticed that these "problems" remain in release 1.27.0.

I also noticed that the bind placeholders have changed in the new version,
but the change doesn't solve the Borland problem.

As it has been mentioned before, the solution is to declare those variables
'extern' (except once in some TU).

As a boost user, I MUST include these two libraries in a pch, since they are
used right from the start, therefore, each time I upgrade to a new version
of boost, I have to manually apply the changes.

In the next message, I'll attach the files:

(boost/tuple/detail) tuple_ignore.hpp
This NEW header contains boost::tuples::detail::swallow_asign and
The corresponding definitions in tuple_basic.hpp and
tuple_basic_no_partial_spec.hpp must be removed, and this header must be
included in boost/tuple/tuple.hpp.

(boost/bind) placehoders.hpp

Both headers have been extended to allow the static variables be declared
'extern' and '__export' (the later is required if the definition is placed
in a dll, as it is my case)

Basically, the user should define BOOST_XXX_EXTERN before including the
library headers, where XXX is either TUPLE or BIND, in order to introduce
external and dll-exported definitions of those variables. Additionally, the
headers must be included somehwere without the _EXTERN macro defined.

Could you check this and commit it?
Thank you.

Fernando Cacciola
Sierra s.r.l.

Boost list run by bdawes at, gregod at, cpdaniel at, john at