title: Error : redefinition of default parameter
body: <p>I have two methods to implement named : Compute_correlation and cca. This is how I define them :</p>
  
  <pre><code>namespace dlib
  {
       template &lt;typename T&gt;matrix&lt;typename T::type,0,1&gt; compute_correlations (
          const matrix_exp&lt;T&gt;&amp; L,
          const matrix_exp&lt;T&gt;&amp; R
         );
  
        template &lt;typename T&gt;matrix&lt;T,0,1&gt; cca (
          const matrix&lt;T&gt;&amp; L,
          const matrix&lt;T&gt;&amp; R,
          matrix&lt;T&gt;&amp; Ltrans,
          matrix&lt;T&gt;&amp; Rtrans,
          unsigned long num_correlations,
          unsigned long extra_rank = 5,
          unsigned long q = 2,
          double regularization = 0
         );
  
      int _tmain(int argc, _TCHAR* argv[]) {...}
      template &lt;
          typename T
          &gt;
      matrix&lt;typename T::type,0,1&gt; compute_correlations (
          const matrix_exp&lt;T&gt;&amp; L,
          const matrix_exp&lt;T&gt;&amp; R
      )
      {
          DLIB_ASSERT( L.size() &gt; 0 &amp;&amp; R.size() &gt; 0 &amp;&amp; L.nr() == R.nr(), 
              "\t matrix compute_correlations()"
              &lt;&lt; "\n\t Invalid inputs were given to this function."
              &lt;&lt; "\n\t L.size(): " &lt;&lt; L.size()
              &lt;&lt; "\n\t R.size(): " &lt;&lt; R.size()
              &lt;&lt; "\n\t L.nr():   " &lt;&lt; L.nr()
              &lt;&lt; "\n\t R.nr():   " &lt;&lt; R.nr()
              );
  
          typedef typename T::type type;
          matrix&lt;type&gt; A, B, C;
          A = diag(trans(R)*L);
          B = sqrt(diag(trans(L)*L));
          C = sqrt(diag(trans(R)*R));
          A = pointwise_multiply(A , reciprocal(pointwise_multiply(B,C)));
          return A;
      }
  
      template &lt;typename T&gt;
      matrix&lt;T,0,1&gt; cca (
          const matrix&lt;T&gt;&amp; L,
          const matrix&lt;T&gt;&amp; R,
          matrix&lt;T&gt;&amp; Ltrans,
          matrix&lt;T&gt;&amp; Rtrans,
          unsigned long num_correlations,
          unsigned long extra_rank = 5,
          unsigned long q = 2,
          double regularization = 0
      )
      {
          DLIB_ASSERT( num_correlations &gt; 0 &amp;&amp; L.size() &gt; 0 &amp;&amp; R.size() &gt; 0 &amp;&amp; L.nr() == R.nr() &amp;&amp;
              regularization &gt;= 0, 
              "\t matrix cca()"
              &lt;&lt; "\n\t Invalid inputs were given to this function."
              &lt;&lt; "\n\t num_correlations: " &lt;&lt; num_correlations 
              &lt;&lt; "\n\t regularization:   " &lt;&lt; regularization 
              &lt;&lt; "\n\t L.size(): " &lt;&lt; L.size()
              &lt;&lt; "\n\t R.size(): " &lt;&lt; R.size()
              &lt;&lt; "\n\t L.nr():   " &lt;&lt; L.nr()
              &lt;&lt; "\n\t R.nr():   " &lt;&lt; R.nr()
              );
  
          using std::min;
          const unsigned long n = min(num_correlations, (unsigned long)min(R.nr(),min(L.nc(), R.nc())));
          return impl_cca(L,R,Ltrans, Rtrans, num_correlations, extra_rank, q, n, regularization); 
      }
  </code></pre>
  
  <p>I am trying to implement them from main, but the following error is shown:
  redefinition of default parameter. Please help me</p>