> But the compiler needs to know about the existence of these functions. There
> aren't any "most-general" versions defined anywhere. If you're not including
> a graph implementation, there's no way the compiler can know about the
> interface.
>
> You might be able to get around this by including the adjacency_matrix.hpp
> in your .cpp files before the headers that are using the generic interface.
>
You're totally right. And thanks for your hint, as I think it is the right way to deal
with this "problem?".
Now the compiler doesn't complain about any of those functions.
But I still get errors I can't find explanation for.

Mainly, it complains when using BOOST_CONCEPT_REQUIRES to check
for adjacency_matrix implementing BidirectionalGraphConcept.
The error follows:

/usr/local/include/boost-1_38/boost/concept_check.hpp:207: error: se solicitó la conversión desde ‘boost::adj_matrix_traversal_tag’ al tipo no escalar ‘boost::bidirectional_graph_tag’

In English, it means I asked for conversion from boost::adj_matrix_traversal_tag
to nonscalar type boost::bidirectional_graph_tag.

copy_graph also complains about not finding a suitable operator= when assigning vertex bundled properties
from the adjacency_matrix to an adjacency_list. This is working when assigning from
a bidirectional adjacency_list to a directed adjacency_list and, in fact, my vertex property bundle
has an explicitly defined operator=, and my edge property bundle keeps the default byte-to-byte
operator=.

Any hints on what might be happenning? As I said in my last message, I can send the full error listing,
if you need it.

Thanks again,

Juan