How is template function call ambiguity resolved?
<p>I want to make a function <code>conj</code> which will be applied only if the type of the argument is NOT <code>std::complex&lt;T&gt;</code>.  I could use <code>enable_if</code>, but do I need to?</p>

<p>If I have the following:</p>

<pre><code>namespace{ 
    template&lt;typename T&gt; 
    T conj (T x) { 
        return x; 
    } 
}
</code></pre>

<p>And we already have in <code>std</code></p>

<pre><code>template&lt;typename T&gt; 
std::complex&lt;T&gt; conj (std::complex&lt;T&gt; x);
</code></pre>

<p>Will a call to <code>conj(z)</code> where <code>z</code> is <code>std::complex&lt;double&gt;</code> be resolved to the std version (since it is a 'better' match?) </p>
