Boost logo

Boost :

From: Matthias Troyer (troyer_at_[hidden])
Date: 2004-09-11 03:09:54


A recent change to the file
boost/graph/detail/adj_list_edge_iterator.hpp breaks the BGL on the IBM
xlC compiler. The change is:

revision 1.7
date: 2004/08/24 22:00:33; author: dgregor; state: Exp; lines: +11
-10
Use boost::optional to avoid copying singular iterators

The problem is that on the IBM compiler unfortunately, for some strange
reason the destructor of boost::optional fails to compile if the type
is an OutEdgeIterator, as can be seen in the following program that
fails:

#include <boost/graph/adjacency_list.hpp>
using namespace boost;
int main()
{
   typedef adjacency_list<vecS,vecS,directedS> G;
   typedef boost::graph_traits<G>::out_edge_iterator OutEdgeIterator;
   boost::optional<OutEdgeIterator> edges;
}

with the horrible error messages listed below. Since I do not see how
to fix optional to work with the OutEdgeIterator (it looks like a
compiler bug to me), I would like to ask the BGL authors if they could
undo this recent change, or at least undo it for the IBM compiler so
that the BGL compiles again? Or does anybody experienced with optional
and the IBM compiler see how to patch optional to make it work with the
IBM compiler?

Best regards

Matthias

"boost/boost/optional/optional.hpp", line 353.66: 1540-0210 (S) "T" is
not a base class of
"out_edge_iter<std::_Ptrit<boost::detail::sep_<unsigned
long,boost::no_property>,long,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &>,unsigned
long,boost::detail::edge_desc_impl<boost::directed_tag,unsigned
long>,long>".
"boost/boost/optional/optional.hpp", line 353.10: 1540-0700 (I) The
previous message was produced while processing
"boost::optional_detail::optional_base<boost::detail::
out_edge_iter<std::_Ptrit<boost::detail::sep_<unsigned
long,boost::no_property>,long,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &>,unsigned
long,boost::detail::edge_desc_impl<boost::directed_tag,unsigned
lon...".
"boost/boost/optional/optional.hpp", line 327.11: 1540-0700 (I) The
previous message was produced while processing
"boost::optional_detail::optional_base<boost::detail::
out_edge_iter<std::_Ptrit<boost::detail::sep_<unsigned
long,boost::no_property>,long,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &>,unsigned
long,boost::detail::edge_desc_impl<boost::directed_tag,unsigned
lon...".
"boost/boost/optional/optional.hpp", line 208.24: 1540-0700 (I) The
previous message was produced while processing
"boost::optional_detail::optional_base<boost::detail::
out_edge_iter<std::_Ptrit<boost::detail::sep_<unsigned
long,boost::no_property>,long,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &>,unsigned
long,boost::detail::edge_desc_impl<boost::directed_tag,unsigned
lon...".
"boost/boost/optional/optional.hpp", line 130.7: 1540-0700 (I) The
previous message was produced while processing
"boost::optional_detail::optional_base<boost::detail::
out_edge_iter<std::_Ptrit<boost::detail::sep_<unsigned
long,boost::no_property>,long,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &>,unsigned
long,boost::detail::edge_desc_impl<boost::directed_tag,unsigned
lon...".
"boost/boost/optional/optional.hpp", line 436.5: 1540-0700 (I) The
previous message was produced while processing
"boost::optional<boost::detail::out_edge_iter<std::_Ptrit<boost::
detail::sep_<unsigned
long,boost::no_property>,long,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &,boost::detail::sep_<unsigned
long,boost::no_property> *,boost::detail::sep_<unsigned
long,boost::no_property> &>,unsigned
long,boost::detail::edge_desc_impl<boost::directed_tag,unsigned
long>,long> >::~optional()".
"test.C", line 8.1: 1540-0700 (I) The previous message was produced
while processing "main()".


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