Hello,

I have created a labeled graph:

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS,
    Item, Link > UnGraph;

My labels are uint64_t, I want to have my own ids on the graph.

If I add a node: m_g.add_vertex(nodeId, Item(nodeId));
Everything is fine, but there is a bug with find_labeled_vertex.

I want to check if a label is in my graph:

auto BUnGraph::exists( nid source ) const -> bool
{
    if( m_g.vertex(source) == UnGraph::null_vertex() )
        return false;
    else
        return true;
}

But the method vertex(source) gives me false results, and returns me a default constructed vertex_descriptor when a node is not in the graph instead of a null_vertex().

I have isolated the method.

labeled_graph.hpp
    /** @name Find Labeled Vertex */
    //@{
    // Tag dispatch for sequential maps (i.e., vectors).
    template <typename Container, typename Graph, typename Label>
    typename graph_traits<Graph>::vertex_descriptor
    find_labeled_vertex(Container const& c, Graph const&, Label const& l,
                        random_access_container_tag)
    { return l < c.size() ? c[l] : graph_traits<Graph>::null_vertex(); }

I have checked the internal map.
If I add a single node in the graph, map.size() == 42. Instead of 1 !
If I add 5 nodes size() == 248.

So any label number inferior to map.size() will give false results ...

What's going on ?

Thank you.