title: inheriting from an enable_if'd base
body: <p>I'm trying to partially specialize a trait for arrays of non-chars:</p>
  
  <pre><code>template&lt;typename T&gt;
  struct is_container : std::false_type {};
  
  template&lt;typename T, unsigned N&gt;
  struct is_container&lt;T[N]&gt;
  : std::enable_if&lt;!std::is_same&lt;T, char&gt;::value, std::true_type&gt;::type {};
  </code></pre>
  
  <p>Visual Studio 2010 gives me a C2039 (<code>type</code> is no element of <code>enable_if</code>...). However, shouldn't SFINAE just bottom out here instead of giving a compiler error? Or does SFINAE not apply in this case?</p>
  
  <p>Of course I could just separate the specializations for non-char and char:</p>
  
  <pre><code>template&lt;typename T&gt;
  struct is_container : std::false_type {};
  
  template&lt;typename T, unsigned N&gt;
  struct is_container&lt;T[N]&gt; : std::true_type {};
  
  template&lt;unsigned N&gt;
  struct is_container&lt;char[N]&gt; : std::false_type {};
  </code></pre>
  
  <p>But I would really like to know why SFINAE doesn't work in this particular case.</p>