Boost logo

Boost :

From: Efi Fogel (efifogel_at_[hidden])
Date: 2007-04-17 13:31:37


Dear BGL developers,

I believe that I've encountered a bug in the BGL version 103200.

File boost/graph/detail/array_binary_tree.hpp, Lines 157 and 158 contain the
following statements:

    edata[ boost::get(id, tmp) ] = i;
    edata[ boost::get(id, value()) ] = x.i;

I think that the qualification should be removed.

The first parameter 'id' in both calls is of type 'ID', which is a template
parameter. It could be instantiated with a type defined in a different
namespace, say CGAL. The global 'get()' function, which accept the CGAL id
parameter is also defined in CGAL namespace. It must, because other calls to
the get() function do not have the qualification, and according to ADL
(Koenig Lookup), the function is searched in CGAL namespace. As a
consequence the compiler (g++ >= 4.1.0) complains that there is no match and
reports an error.


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