title: Can a stack have an exception safe method for returning and removing the top element with move semantics?
body: <p>In an answer to a question about <code>std::stack::pop()</code> <a href="https://stackoverflow.com/questions/2616786/using-stack-defined-in-c-stl/2616793#2616793">I claimed</a> that the reason <code>pop</code> does not return the value is for exception safety reason (what happens if the copy constructor throws). </p>
  
  <p><a href="https://stackoverflow.com/users/1968/konrad-rudolph">@Konrad</a> commented that now with move semantics this is no longer relevant. Is this true?</p>
  
  <p>AFAIK, move constructors <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2983.html" rel="nofollow noreferrer"><em>can</em> <code>throw</code></a>, but perhaps with <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html#implementing-std-move-if-noexcept" rel="nofollow noreferrer"><code>noexcept</code></a> it can still be achieved.</p>
  
  <p>For bonus points what thread safety guarantees can this operation supply? </p>