title: No match found for template template function
body: <p>The following code fails to compile under g++, with the following error:</p>
  
  <p>"no matching function for call to 'GetRecById(int&amp;, NULL)'":</p>
  
  <pre><code>template &lt; typename T &gt;
  struct DummyLookup
  { 
      static bool DoLookup( T&amp; rec, const char* id )
      {
          rec = 123;
          return true;
      }
  };
  
  template &lt; typename T,
             template &lt;class&gt; class LookupPolicy
           &gt;  
  static bool GetRecById( T&amp; rec, const char* id )
  {        
      return LookupPolicy&lt;T&gt;::DoLookup( rec, id );
  } 
  
  static void testLookup( void )
  {        
      int rec = 0;
      const bool ret = GetRecById&lt; int, DummyLookup&lt;int&gt; &gt;( rec, NULL );
  
      std::cout &lt;&lt; "rec = " &lt;&lt; rec &lt;&lt; std::endl; // should be 123
  } 
  
  
  int main()
  {                          
      testLookup();
  
      return 0;
  }
  </code></pre>
  
  <p>The intention is that GetRecById() supports instantiation with different record queriying policies e.g. for unit testing purposes. </p>
  
  <p>What am I doing wrong here? FWIW, it does compile under Sun Studio 10.</p>
  
  <p>Thanks in advance.</p>