title: "unresolved overloaded function type" when calling templated function from boost::thread
body: <p>I'm attempting to implement quicksort in-place, using boost's threading facility.  Unfortunately I'm getting an error about "", when my function is not overloaded.  Code follows:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;fstream&gt;
  #include &lt;vector&gt;
  #include &lt;string&gt;
  #include &lt;boost/thread.hpp&gt;
  
  template&lt;typename T&gt;
  void quicksortInPlace(std::vector&lt;T&gt; &amp;array,
                        size_t left,
                        size_t right,
                        size_t pivot)
  {
      size_t storeIndex = left;
      // ...
      if (left &lt; storeIndex)
      {
          boost::thread lessThread(quicksortInPlace,
                                   array,
                                   left+0,
                                   storeIndex-1,
                                   storeIndex-1);
          lessThread.join();
      }
      if (right &gt; storeIndex)
      {
          boost::thread moreThread(quicksortInPlace,
                                   array,
                                   storeIndex+1,
                                   right+0,
                                   storeIndex+1);
          moreThread.join();
      }
  
  }
  
  
  int main()
  {
      std::vector&lt;std::string&gt; stuff;
      stuff.push_back("two");
      stuff.push_back("one");
      size_t left  = 0;
      size_t right = 1;
      size_t pivot = 0;
      quicksortInPlace(stuff,left,right,pivot);
      return 0;
  }
  </code></pre>
  
  <p>I'm getting the following compilation errors (using stlfilt to clean up g++ output: gfilt -width:o main.cpp)</p>
  
  <pre><code>BD Software STL Message Decryptor v3.10 for gcc 2/3/4
  main.cpp: In function ‘void quicksortInPlace(vector&lt;string&gt; &amp;, size_t, size_t, size_t)’:
  main.cpp:56:   instantiated from here
  main.cpp:36: error: No match for ‘boost::thread::thread(&lt;unresolved overloaded function type&gt;, vector&lt;string&gt; &amp;, size_t, size_t, size_t)’
  main.cpp:41: error: No match for ‘boost::thread::thread(&lt;unresolved overloaded function type&gt;, vector&lt;string&gt; &amp;, size_t, size_t, size_t)’
  </code></pre>
  
  <p>Here, I've used "left+0" instead of left so that the error is not of the form</p>
  
  <pre><code>main.cpp:41: error: No match for ‘boost::thread::thread(&lt;unresolved overloaded function type&gt;, vector&lt;string&gt; &amp;, size_t, size_t &amp;, size_t)’
  </code></pre>
  
  <p>How can I remove this ambiguity?</p>