Question: I'm defining a real type and I'm using strtod for the exponential way even though is untested and don't really know if it works but more imporantly I would like to know if there is any built in function like strtod for engineering notation and if there isn't, how can I do it?

Thanks in advance,
Martin

Answer: 
You aren't defining an operator << anywhere. You should define it like this out of your class :

```
template <typename VertexType, typename EdgeType>
std::ostream& operator << (std::ostream& out, const Vertex<VertexType,EdgeType>& v);
// implementation
template <typename VertexType, typename EdgeType>
std::ostream& operator << (std::ostream& out, const Vertex<VertexType,EdgeType>& v) {
    // print whatever you want that represents your vertex

    // please don't forget to return this reference.
    return out;
}

```

Also, having a class with a vector of instances of it inside is a call for trouble. Remember that "vector<Vertice<VertexType,EdgeType> >" is an array of *instances*, not an array of references. If you want a array of 'references' to Vertex, use an array of pointers.

And consider using boost's graph library instead of redefining yet another one and coming to all pitfall associated with graphs (like memory management for instance). The boost library also have some useful algorithms that you could want to use..
Well, implement `template <class V, class E> std::ostream& operator<<(std::ostream& os, const Vertex<V,E> &vertex)` as a static friend of Vertex. It's pretty much what the compiler tells you...