title: Initialising boost::array after declaration
body: <p>We can initialise a boost or std::array using the following syntax:</p>
  
  <pre><code>array&lt;int,5&gt; b = {1, 2, 3, 4, 5};
  </code></pre>
  
  <p>This is fine if 'b' is a local variable. How about if 'b' is a class member? </p>
  
  <pre><code>b = {1, 2, 3, 4, 5}; // Error: expected an expression
  b = array&lt;int,5&gt;{1, 2, 3, 4, 5}; // Error: type name is not allowed 
  b = array&lt;int,5&gt;({1, 2, 3, 4, 5}); // Error: expected an expression
  b = array&lt;int,5&gt;(1, 2, 3, 4, 5); // Error: no suitable constructor exists to convert from "int" to "array&lt;int, 5&gt;"
  </code></pre>
  
  <p>Do you really have to do this:</p>
  
  <pre><code>array&lt;int,5&gt; c = {1, 2, 3, 4, 5};
  
  b = c;
  </code></pre>
  
  <p>Which seems a little wasteful as it creates 'c', initialises it, and then copies it into b before destroying 'c'. </p>