title: std::is_same absurd behaviour on type equality check
body: <p>Consider the following code:</p>
  
  <pre><code>struct A
  {
      using type = int;
      using reference = int&amp;;
  };
  static_assert(std::is_same_v&lt;A::type&amp;, A::reference&gt;); // &lt;-- Success, as it would be
  static_assert(std::is_same_v&lt;const A::type&amp;, const A::reference&gt;); // &lt;-- Fail!!
  </code></pre>
  
  <p>What is going on?? Why they are not the same type anymore? I spent lot of time finding this and it really seems a compiler bug</p>