title: views::flat for C++ ranges?
body: <p>Javascript can flatten an array:</p>
  <pre><code>const nesting = 2;
  const arr = [0,[1,[2,3]]].flat(nesting);
  console.log(arr);
  //output
  [0,1,2,3]
  </code></pre>
  <p>It all makes sense because a Javascript array can hold data of mixed types.
  Can this be expressed using C++ ranges ? Is it possible to nest ranges in this way ?</p>
  <p>What about if you want to flatten a vector of vectors:</p>
  <pre><code>const vector&lt;vector&lt;int&gt; &gt; vv={{0,1},{2,3}};
  auto rg = vv | views::flat;
  </code></pre>
  <p>Is there such a function in the pipeline ?</p>