Boost logo

Boost :

From: Yingwei Zhang (ywz_at_[hidden])
Date: 2007-11-07 20:19:05


Hello -

I am migrating our code base from boost 1.33.1 to 1.34.1. Some changes in boost/functional is causing compilation issues. The hash.hpp in 1.33 does include std container header files. In 1.34.1, however, forward declaration is added as following:

#if (defined(__GLIBCXX__) && defined(_GLIBCXX_DEBUG)) \
    || BOOST_WORKAROUND(__BORLANDC__, > 0x551) \
    || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x842)) \
    || (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))

#include <deque>
#include <list>
#include <vector>
....
#else
namespace std
{
...
    template <class T, class Allocator> class list;
    template <class T, class Allocator> class vector;
    template <class Key, class T, class Compare, class Allocator> class map;
...
}

I am working on Darwin with gcc 4.0.1, and the #if test is not true, so we fall through the #else path, with only forward declaration. If my code does not include standard container headers explicitly, it will not compile with boost 1.34.1. Of course the easy fix is to add the standard container header in my code instead of depending on boost to pull it in. What is the reason behind this change?

Thanks for explanations.

Yingwei


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk