title: C++20 Concept to check tuple-like types
body: <p>I'd like to create a concept for tuple-like types. A tuple-like type would be something that, like <code>std::pair</code>, <code>std::tuple</code> and <code>std::array</code>, offers a compile time known number of types accessible through a compile time indexed <code>get&lt;size&gt;</code> function.</p>
  <p>I am new to concepts and I do not know where to start. Unfortunately, the STL seems not to have such a concept in the <code>&lt;concepts&gt;</code> header.</p>
  <p>For example, I can write:</p>
  <pre><code>template&lt;typename T&gt;
  concept tuple_like = requires(T value)
  {
      std::invoke(get&lt;0&gt;, value);
  };
  </code></pre>
  <p>But I am not sure how to generalize that <code>0</code> to be any index.</p>