
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()".