title: Is there an alternative for haskell underscore in c++?
body: <p>Lets imagine that I have haskell-like class Maybe in c++. For example, it can be implemented like that:</p>
  
  <pre><code>template&lt;typename T, typename val&gt; 
  struct Maybe;
  
  template&lt;typename val&gt; struct Maybe&lt;std::true_type, val&gt; {  
      using value = val; 
  };
  
  template&lt;&gt; struct Maybe&lt;std::false_type, void&gt; {
  
  };
  
  template&lt;typename val&gt; 
  using Just = Maybe&lt;std::true_type, val&gt;;
  
  using Nothing = Maybe&lt;std::false_type, void&gt;;
  </code></pre>
  
  <p>I want to compare them by using "equal" function:</p>
  
  <pre><code>template&lt;typename T, typename R&gt;
  struct equal;
  </code></pre>
  
  <p>If I have instance <code>&lt;Just&lt;T&gt;, Just&lt;R&gt;&gt;</code>, I need both types <code>T</code> and <code>R</code> to know the result of the comparison, but in case of <code>&lt;Just&lt;T&gt;, Nothing&gt;</code> or <code>&lt;Nothing, Just&lt;T&gt;&gt;</code> I don't need to know anything about the type T. In haskell you can use underscore (<code>Just _</code>), but is there anything similar in c++?</p>