Class template function signature syntax
<p>I have a class defined like this:</p>

<pre><code>template&lt; class TBoundingBox &gt;
class BoundingBoxPlaneCalculator
{
  typedef PlaneSpatialObject&lt; TBoundingBox::PointDimension &gt; PlaneSpatialObjectType;
  typedef typename PlaneSpatialObjectType::Pointer      PlaneSpatialObjectPointer;
  std::vector&lt;PlaneSpatialObjectPointer&gt; GetPlanes() const{}
}
</code></pre>

<p>If I call the function like:</p>

<pre><code>std::vector&lt;PlaneCalculatorType::PlaneSpatialObjectPointer&gt; planes = planeCalculator-&gt;GetPlanes();
</code></pre>

<p>It works fine. However, if I change the delcaration to simply</p>

<pre><code>  std::vector&lt;PlaneSpatialObjectPointer&gt; GetPlanes() const;
</code></pre>

<p>and then try to define the function outside of the header:</p>

<pre><code>template&lt; class TBoundingBox &gt;
std::vector&lt;BoundingBoxPlaneCalculator&lt; TBoundingBox &gt;::PlaneSpatialObjectPointer&gt;
BoundingBoxPlaneCalculator&lt; TBoundingBox &gt;::GetPlanes() const
{

}
</code></pre>

<p>I get</p>

<pre><code>itkBoundingBoxPlaneCalculator.txx:61:82: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;class _Tp, class _Alloc&gt; class std::vector’
itkBoundingBoxPlaneCalculator.txx:61:82: error:   expected a type, got ‘itk::BoundingBoxPlaneCalculator&lt;TBoundingBox&gt;::PlaneSpatialObjectPointer’
</code></pre>

<p>I also tried adding typename, but nothing changed:</p>

<pre><code>template&lt; class TBoundingBox &gt;
std::vector&lt;typename BoundingBoxPlaneCalculator&lt; TBoundingBox &gt;::PlaneSpatialObjectPointer&gt;
BoundingBoxPlaneCalculator&lt; TBoundingBox &gt;::GetPlanes() const
</code></pre>

<p>Can anyone see what is wrong with this syntax?</p>

<p>Thanks,</p>

<p>David</p>
