title: Do I need to port std::move to my kernel?
body: <p>I'm concerned that in kernel land I will not have access to things like <code>std::move</code>, <code>std::forward</code>, <code>std::initializer_list</code>, etc. While some of these features are built into the language, they still require the appropriate headers and library implementation. Is the following sufficient to take advantage of move semantics, or do I need to go the full nine yards and port a C++ library?</p>
  
  <pre><code>template &lt;typename T&gt;
  typename remove_reference&lt;T&gt;::type&amp;&amp; move(T&amp;&amp; arg)
  {
    return static_cast&lt;typename remove_reference&lt;T&gt;::type&amp;&amp;&gt;(arg);
  }
  </code></pre>