Hi Andrew, thanks for your help.

I would recommend using the named parameter version of the call since it lets you omit optional parameters.

It seems like the right approach. So now my code is as follows:

    typedef graph_traits<graph_t>::vertex_descriptor Vertex;
    Vertex source;

... some code that finds the appropriate vertex

    // DFSActions is the DFS visitor, with actions on vertex discover and finish
    DFSActions actions(this);

    // Calling DFS with named parameters
    depth_first_search(*g, visitor(actions), root_vertex(source));

Problem: the code doesn't compile, and I'm sure the fault is in "root_vertex(source)". This is the (very synthesized) error thrown by the compiler:

property_map.hpp: In instantiation of ‘boost::property_traits<boost::bgl_named_params<long unsigned int, boost::root_vertex_t, boost::no_property> >’:
depth_first_search.hpp:192:   instantiated from ‘void boost::depth_first_search( long line ) [ with REALLY long line ]’
depth_first_search.hpp:222:   instantiated from ‘void boost::depth_first_search( long line ) [ with REALLY long line ]’
graphdef.cpp:134:   instantiated from here

graphdef.cpp:134:   instantiated from here
property_map.hpp:31: error: no type named ‘key_type’ in ‘struct boost::bgl_named_params<long unsigned int, boost::root_vertex_t, boost::no_property>’
property_map.hpp:33: error: no type named ‘reference’ in ‘struct boost::bgl_named_params<long unsigned int, boost::root_vertex_t, boost::no_property>’
property_map.hpp:34: error: no type named ‘category’ in ‘struct boost::bgl_named_params<long unsigned int, boost::root_vertex_t, boost::no_property>’

And many other errors, but this is the first one. To check if the problem was in my "source" vertex, I changed the call to DFS with the default value for the root_vertex (looked up in the header file):

    depth_first_search(*g, visitor(actions), root_vertex(*vertices(*g).first));

The error keeps showing. Having a look at the DFS source code, it seems that the named param function expects a root_vertex of type root_vertex_t, which appears several times in the error msg. The Boost docs specify a type of graph_traits<graph_t>::vertex_descriptor, which is what I'm using now. I suppose it's the same type, but I've not found the type definition. I'm sure it must be a very stupid mistake, but I can't see it.

Any clues?