title: Will static_if deprecate template specialization?
body: <p>Some usual template specialization like this:</p>
  
  <pre><code>template&lt;class T&gt;
  class C
  {
      void common() { ... }
      void f2 = delete;
  };
  
  template&lt;&gt;
  class C&lt;int&gt;
  {
      void common() { ... }
      void f1() { ... }
  };
  </code></pre>
  
  <p>Could be represented with <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3322.pdf" rel="nofollow"><code>static_if</code></a> as:</p>
  
  <pre><code>template&lt;class T&gt;
  class C
  {
      void common() { ... }
  
      static_if(std::is_same&lt;T, int&gt;::value)
      {
          void f1( ) { ... }
      }
      else
      {
          void f2( ) = delete;
      }
  }
  </code></pre>
  
  <p>Are these directly competing features? Can template specialization do something <code>static_if</code> cannot? It seems like <code>static_if</code> can do everything template specialization can do, and much much more.</p>
  
  <p>As an aside: I don't really like <code>static_if</code> in this context because it potentially makes what parts of an interface are available to you in any given circumstance non-obvious. Maybe template specialization still provides clearer syntax in some cases.</p>