C++ Template specialisation issue
<p>I have code that boils down to this:</p>

<pre><code>//Just a templated array class .. implementation doesn't matter
template&lt;int N&gt;
struct Array {};

//A simple Traits like class
template&lt;typename T&gt;
struct MyTraits {}

//Specialization of the traits class
template&lt;int N&gt;
struct Foo&lt; Array&lt;N&gt; &gt;
{
  static void monkey() {};
}

int main()
{
  Foo&lt; Array&lt;3&gt; &gt;::monkey();
}
</code></pre>

<p>Unfortunately the compiler doesn't like it...</p>

<pre><code>test.cpp: In function ‘int main()’:
test.cpp|17| error: ‘monkey’ is not a member of ‘Foo&lt;Array&lt;3&gt; &gt;’
</code></pre>

<p>What am I doing wrong, and how do I fix it?
Thanks</p>
