title: c++11 enable_if error - template parameter re-declaration
body: <p>I am trying to get the following code to compile:</p>
  
  <pre><code>template &lt;class T, typename std::enable_if&lt;!std::is_fundamental&lt;T&gt;::value, int &gt;::type = 0 &gt;
  class Calc
  {
    public:
      int operator()( const T&amp; v ) const {
          return v.getValue();
      }
  };
  
  template &lt;class T, typename std::enable_if&lt;std::is_fundamental&lt;T&gt;::value, int &gt;::type = 0 &gt;
  class Calc : CalcBase &lt;T&gt;
  {
  };
  </code></pre>
  
  <p>On compilation I am getting the following error:</p>
  
  <pre><code>c.cpp:26: error: template parameter 'typename std::enable_if&lt;(! std::is_fundamental::value), int&gt;::type &lt;anonymous&gt;'
  c.cpp:36: error: redeclared here as 'typename std::enable_if&lt;std::is_fundamental::value, int&gt;::type &lt;anonymous&gt;'
  </code></pre>
  
  <p>The intent here is to select the the version of Calc that overrides the base class function call operator if the passed template parameter is a class. If the passed parameter is a fundamental type, then we choose the version of Calc that does not override the base class functionality.
  Could you please help me understand how I can get this working?</p>