title: Explicit template specialization for constructor
body: <p>I have a template class, with a copy constructor:</p>
  
  <pre><code>struct index_method {/*whatever*/};
  
  template &lt;class A, class B&gt;
  class ExampleClass
  {
  public:
     ExampleClass(void) {}
     template &lt;class C&gt;
     ExampleClass( const ExampleClass&lt;A,C&gt;&amp; src_, const B&amp; b_ = B() ) : _b(b_) { }
  private:
     B _b;
  };
  </code></pre>
  
  <p>The following template constructor specialization is compiled properly by gcc 4.7.0:</p>
  
  <pre><code>template &lt;&gt;
  template &lt;&gt;
  ExampleClass&lt;double,index_method&gt;::ExampleClass&lt;index_method&gt;( const ExampleClass&lt;double,index_method&gt;&amp; src_, const index_method&amp; b_ )
    : _b(b_)
  {
  }
  </code></pre>
  
  <p>But it has issues in MSVC:</p>
  
  <blockquote>
    <p><a href="http://msdn.microsoft.com/en-us/library/1t1kaz6a(v=vs.110).aspx" rel="nofollow noreferrer">error C2976: 'ExampleClass' : too few template arguments</a></p>
  </blockquote>
  
  <p>Based on another <a href="https://stackoverflow.com/questions/8961545/explicit-template-specialization">topic</a>, I tried a more simple code just for MSVC:</p>
  
  <pre><code>ExampleClass&lt;double,index_method&gt;::ExampleClass&lt;index_method&gt;( const ExampleClass&lt;double,index_method&gt;&amp; src_, const index_method&amp; method_ )
    : _b(method_)
  {
  }
  </code></pre>
  
  <p>but it also doesn't work.</p>
  
  <p>Is there any way to specify a template copy constructor for a template class in MSVC 2012?</p>