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) \
    || (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))

#include <deque>
#include <list>
#include <vector>
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.


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