Do template parameters need to be forward declared or does the type definition to be known
<p>Basically I have this code, but GCC complains that the vector cannot 
be constructed with an empty type. Has anybody encountered this problem 
before? I should mention that Vertex3D is only used through pointers in 
the file and so there should be no reason for the whole type to be 
known by the compiler. I dont know how templates behave in this 
respect..</p>

<pre><code>//#include "cgVertex3D.hpp"                                                                                                                                                                                              
#include "cgDirection3D.hpp"

#include "cgHandedness.hpp"

class Vertex3D; // Forward declaration to avoid mutual header include

class Polygon3D {
  // Vertices constituting this polygon
  vector&lt;Vertex3D*&gt; *vertices = NULL;

  public:
    ...
</code></pre>
