title: initializer_list and move semantics
body: <p>Am I allowed to move elements out of a <code>std::initializer_list&lt;T&gt;</code>?</p>
  
  <pre><code>#include &lt;initializer_list&gt;
  #include &lt;utility&gt;
  
  template&lt;typename T&gt;
  void foo(std::initializer_list&lt;T&gt; list)
  {
      for (auto it = list.begin(); it != list.end(); ++it)
      {
          bar(std::move(*it));   // kosher?
      }
  }
  </code></pre>
  
  <p>Since <code>std::intializer_list&lt;T&gt;</code> requires special compiler attention and does not have value semantics like normal containers of the C++ standard library, I'd rather be safe than sorry and ask.</p>