title: What is the name of the feature/syntax that combines curly braces, ampersand and length of character sequences?
body: <p>I was reading Chapter 9 of the 2nd edition of <em>A Tour of C++</em> by Bjarne Stroustrup and was puzzled by the use of <code>{&amp;king[0],2}</code> where <code>king</code> is a <code>string</code> variable. I get that it returns the first 2 strings but I don't know what the name is for this to look up more details about it like:</p>
  <ul>
  <li>Does the <code>&amp;</code> ampersand indicate that it is a reference or does it switch it to pointer?</li>
  <li>In what version was this feature introduced? I know the book is based on C++17 but don't know what version began supporting it.</li>
  </ul>
  <pre><code>// Strings and Regular Expressions
  #pragma once
  #include &lt;string&gt;
  
  
  using namespace std;
  
  string cat(string_view sv1, string_view sv2) {
      string res(sv1.length()+sv2.length(), '\0');
      char* p = &amp;res[0];
  
      for (char c : sv1)                  // one way
          *p++ = c;
      copy(sv2.begin(), sv2.end(), p);    // another way
      return res;
  }
  
  void tryCat() {
      string king = &quot;Harold&quot;;
      auto s1 = cat(king, &quot;William&quot;);             // string and const char*
      auto s2 = cat(king, king);                  // string and string
      auto s3 = cat(&quot;Edward&quot;, &quot;Stephen&quot;sv);       // const char* and string_view
      auto s4 = cat(&quot;Canute&quot;sv, king); 
      auto s5 = cat({&amp;king[0],2}, &quot;Henry&quot;sv);     // HaHenry
      auto s6 = cat({&amp;king[0],2}, {&amp;king[2],4});  // Harold     
      cout &lt;&lt; s6 &lt;&lt; endl;
  }
  
  int main () {
      tryCat();
  }
  </code></pre>