title: Can a braced list of numbers be used as an argument passed to a variadic function (or constructor)?
body: <p>Can a braced list of numbers {0x00, 0x01, 0x02} be used as an argument passed to a variadic function (or constructor) ?</p>
  
  <p>In the code below, I can successfully compile and call this:</p>
  
  <pre><code>BlobClass blob('A', "xyz", 'B', sss, 'C');
  </code></pre>
  
  <p>but the following does not even compile:</p>
  
  <pre><code>BlobClass blob('A', {0x00, 0x01, 0x02},  'B', sss , 'C');
  </code></pre>
  
  <p>Is there a way to make it work with the following class?:</p>
  
  <pre><code>class BlobClass
  {
  protected:
      unsigned char data[512];
  
      void memcpy_var(unsigned char*) // variadic memcpy terminator
      {
      }
  
      template &lt;typename... REMAINING&gt;
      void memcpy_var(unsigned char* Dest, const std::string&amp; Peeled, const REMAINING&amp;... RemainingArgs){ // variadic memcpy for std strings
          size_t TheSize = Peeled.size();
          std::memcpy(Dest, Peeled.c_str(), TheSize);
          memcpy_var(Dest + TheSize, RemainingArgs...);
      }
  
      template &lt;typename... REMAINING&gt;
      void memcpy_var(unsigned char* Dest, const char* Peeled, const REMAINING&amp;... RemainingArgs){    // variadic memcpy for C strings
          while (*Peeled != 0)
              *Dest++ = *Peeled++;
  
          memcpy_var(Dest, RemainingArgs...);
      }
  
      template &lt;typename... REMAINING&gt;
      void memcpy_var(unsigned char* Dest, const char&amp; Peeled, const REMAINING&amp;... RemainingArgs){    /// variadic memcpy for single Chars
          *Dest = Peeled;
          memcpy_var(Dest + 1, RemainingArgs...);
      }
  
  public:
      template&lt;typename... ARGS&gt;
      BlobClass(ARGS&amp;&amp;... args) {         //Variadic constructor
          memcpy_var(&amp;data[0], args...);
      }
  
      BlobClass();
  }
  
  
  int main()
  {   
      std::string sss("str");
  
      BlobClass blob('A', "xyz", 'B', sss, 'C');              //This works fine
      BlobClass blob('A', {0x00, 0x01, 0x02},  'B', sss , 'C');       //This does not compile with the error: "no overloaded function takes 5 arguments"
  }
  </code></pre>
  
  <p>I have tried adding the following function, but it does not work:</p>
  
  <pre><code>template &lt;typename... REMAINING&gt;
  void memcpy_var(unsigned char* Dest, const std::initializer_list&lt;int&gt;&amp; Peeled, const REMAINING&amp;... RemainingArgs){  // variadic memcpy for an entire initialier list
      size_t TheSize = sizeof Peeled;
      std::memcpy(Dest, &amp;Peeled, TheSize);
      memcpy_var(Dest + TheSize, RemainingArgs...);
  }
  </code></pre>
  
  <p>P.S.
  I know that this class has unsafe code because the memcpy_var() can overrun the data[512] buffer.  I sanitized the bounds checking code for brevity.</p>