title: C++03: keep default copy constructor when using template constructor
body: <p>Imagine I create a class with a template constructor to define implementations later:</p>
  
  <pre><code>struct A {
      template&lt;typename T&gt;
      A(const T&amp; arg);
  };
  </code></pre>
  
  <p>How can I avoid overriding compiler's implicitly generated copy constructor <code>A(const A&amp;)</code>? In C++11 I can do something like</p>
  
  <pre><code>#include &lt;type_traits&gt;
  struct A {
      template&lt;typename T, class = 
          typename std::enable_if&lt;std::is_same&lt;A, T&gt;::value&gt;::type&gt;
      A(const T&amp; arg);
  };
  </code></pre>
  
  <p>and it works. But C++03 doesn't support default template arguments. Any workaround here?</p>