title: What is the reason for `std::make_tuple`?
body: <p>I mean why does <code>std::make_tuple</code> exist? I know that there are situations where the function reduces the amount of characters you have to type because you can avoid template parameters. But is it the only reason? What makes <code>std::tuple</code> special that the function exists while other class templates haven't such function? Is it only because you may use <code>std::tuple</code> more often in such situations?</p>
  
  <hr>
  
  <p>Here are two examples where <code>std::make_tuple</code> reduces the amount of characters:</p>
  
  <pre><code>// Avoiding template parameters in definition of variable.
  // Consider that template parameters can be very long sometimes.
  std::tuple&lt;int, double&gt; t(0, 0.0); // without std::make_tuple
  auto t = std::make_tuple(0, 0.0);  // with std::make_tuple
  
  // Avoiding template parameters at construction.
  f(std::tuple&lt;int, double&gt;(0, 0.0)); // without std::make_tuple
  f(std::make_tuple(0, 0.0));         // with std::make_tuple
  </code></pre>
  
  <p>But like written above, you don't have a function like this for many other class templates.</p>