title: Doesn't constraining the "auto" in C++ defeat the purpose of it?
body: <p>In C++20, we are now able to constrain the <code>auto</code> keyword to only be of a specific type. So if I had some code that looked like the following without any constraints:</p>
  <pre><code>auto something(){
    return 1;
  }
  
  int main(){
    const auto x = something();
    return x;
  }
  </code></pre>
  <p>The variable <code>x</code> here is deduced to be an <code>int</code>. However, with the introduction of C++20, we can now constrain the <code>auto</code> to be a certain type like this:</p>
  <pre><code>std::integral auto something(){
    return 0;
  }
  
  int main(){
    const auto x = something();
    return x;
  }
  </code></pre>
  <p>Doesn't this defeat the purpose of <code>auto</code> here? If I really need a <code>std::integral</code> datatype, couldn't I just omit the <code>auto</code> completely? Am I misunderstanding the use of <code>auto</code> completely?</p>