
On Sun, 18 Dec 2011, Jens Müller wrote:
On 18.12.2011 22:59, Jeremiah Willcock wrote:
That function is in the boost namespace, so it won't be found when searching for an unqualified call to vertices() (which is what algorithms are supposed to use). You might need to do something like the ADL hack you mentioned (pulling those functions into the global namespace) to get the concept check to pass.
As far as I can tell, this _is_ used.
boost/graph/graph_concepts.hpp contains the following:
#if !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) \ && !BOOST_WORKAROUND(__GNUC__, <= 2) \ && !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) # define BOOST_VECTOR_AS_GRAPH_GRAPH_ADL_HACK #endif
#ifdef BOOST_VECTOR_AS_GRAPH_GRAPH_ADL_HACK template <class T> typename T::ThereReallyIsNoMemberByThisNameInT vertices(T const&); #endif
This line is mentioned in the error message, so BOOST_VECTOR_AS_GRAPH_GRAPH_ADL_HACK _is_ indeed defined.
That's odd; I can see a need for a using declaration, but not for a strange function like that one. I think the LEDA adapter will require some kind of namespace import even with a conforming compiler. -- Jeremiah Willcock