title: Hiding template arguments in std::variant
body: <p>I have a set of template classes that I want to put inside a <code>std::variant</code>. The following works, but is rather ugly (I have many more classes in the variant, with many template parameters).</p>
  
  <pre><code>template &lt;typename T&gt;
  struct Type1
  { };
  
  template &lt;typename B, typename C&gt;
  struct Type2
  { };
  
  template &lt;typename A, typename B, typename C&gt;
  using Variant = std::variant&lt;Type1&lt;A&gt;, Type2&lt;B,C&gt;&gt;;
  </code></pre>
  
  <p>Is it possible to "hide" the template arguments in a similar way to this? (doesn't compile)</p>
  
  <pre><code>template &lt;typename A&gt;
  using Type1T = Type1&lt;A&gt;
  
  template &lt;typename B, typename C&gt;
  using Type2T = Type2&lt;B, C&gt;
  
  using Variant = std::variant&lt;Type1T, Type2T&gt;
  </code></pre>
  
  <blockquote>
    <p>error: type/value mismatch at argument 1 in template parameter list
    for 'template class std::variant'</p>
  </blockquote>
  
  <p>Adding <code>typename</code> also doesn't seem to work.</p>