title: What is the difference between the three ways of applying constraints to a template?
body: <p>I just learned that C++20 provides three ways of applying constraints to a template:</p>
  
  <ul>
  <li>Requires Clause</li>
  <li>Trailing Requires Clause</li>
  <li>Constrained Template Parameter</li>
  </ul>
  
  <p>I successfully used constrained template parameters and I tend to prefer that syntax. Still I wonder why there are <strong>three</strong> ways defined in the standard.</p>
  
  <p>Are there fundamental technical differences? Do these flavors have unique advantages or disadvantages (other than syntactical appearance)?</p>