title: How to specify template deduction guides for template aliases?
body: <p>I am trying to make this code compile in <code>VS 2019 (16.10.4)</code> with <code>/std:c++17</code>. The following fails:</p>
  <pre class="lang-cpp prettyprint-override"><code>namespace my
  {
     template&lt;class _Key, class _Compare = std::less&lt;_Key&gt;, class _Allocator = std::allocator&lt;_Key&gt;&gt;
     using Set = std::set&lt;_Key, _Compare, _Allocator&gt;;
  }
  
  void test()
  {
      std::set set1 = { 1, 2, 3 };
      static_assert(std::is_same_v&lt;std::set&lt;int&gt;, decltype(set1)&gt;);
  
      my::Set set2 = { 1, 2, 3 }; // Error here.
      static_assert(std::is_same_v&lt;my::Set&lt;int&gt;, decltype(set2)&gt;);
  }
  </code></pre>
  <p>with error:</p>
  <pre><code>error C2955: 'my::Set': use of alias template requires template argument list
  message : see declaration of 'my::Set'
  </code></pre>
  <p>The same code compiles fine on godbolt with <code>gcc -std=c++17</code> without any deduction guides. See <a href="https://godbolt.org/z/4Keqrx1bE" rel="nofollow noreferrer">sample</a>.</p>
  <p>Is there a way to make this compile on <code>VS 2019 (16.10.4)</code> with <code>/std:c++17</code>? My actual code is quite verbose. I created this minimal reproducible sample and it might just come down to solving this small piece. I also tried specifying <a href="https://en.cppreference.com/w/cpp/container/set/deduction_guides" rel="nofollow noreferrer">deduction guides</a> for <code>my::Set</code> but they have similar errors.</p>