title: Error with using a function as a non-type template parameter
body: <p>I have this template :</p>
  
  <pre><code>        template &lt;class SourceFormat, class DestFormat, void (*convert)(DestFormat, SourceFormat)&gt;
      static void _draw(...);
  </code></pre>
  
  <p>And these functions :</p>
  
  <pre><code>    template &lt;class Class1, class Class2&gt;
      inline static void convertNone(Class1&amp; dest, Class2&amp; source) {
          dest = source;
      };
      inline static void convertARGB_GREY(unsigned __int32&amp; dest, unsigned __int8&amp; source) {
          dest = source + (source &lt;&lt; 8);
          dest += (dest &lt;&lt; 16);
      };
  </code></pre>
  
  <p>I use the template in another function :</p>
  
  <pre><code>    void Blitter::draw(...) {
  
      if (...) {
          _draw&lt;unsigned __int32, unsigned __int32, &amp;convertNone&gt;(...);
      } else {
          _draw&lt;unsigned __int32, unsigned __int8, &amp;convertARGB_GREY&gt;(...); // ERRORS go here!
      }
  }
  </code></pre>
  
  <p>I get these errors :</p>
  
  <pre><code>Error   1   error C2440: 'specialization' : cannot convert from 'void (__cdecl *)(unsigned int &amp;,unsigned char &amp;)' to 'void (__cdecl *const )(unsigned char,unsigned int)'  d:\projects\fanlib\source\blitter.cpp   102
  Error   2   error C2973: 'FANLib::Blitter::_draw' : invalid template argument 'void (__cdecl *)(unsigned int &amp;,unsigned char &amp;)'    d:\projects\fanlib\source\blitter.cpp   102
  </code></pre>
  
  <p>I suppose it's rather obvious that I don't fully comprehend functions-as-parameters... :-(</p>
  
  <p>Many thanks in advance</p>