title: Is value returned by std::unique_ptr::get valid after moving unique_ptr?
body: <p>Consider the following code snippet:</p>
  
  <pre><code>class Owner {
  public:
   Owner(std::unique_ptr&lt;int&gt; ptr) : owned_pointer&lt;int&gt;(std:move(ptr)) {}
  private:
   std::unique_ptr&lt;int&gt; owned_pointer;
  };
  
  
  std::unique_ptr&lt;int&gt; ptr(new int);
  int* ptr1 = ptr.get();
  Owner new_owner(std::move(ptr));
  </code></pre>
  
  <p>Is it safe to assume that ptr1 is valid as long as new_owner stays in scope? It seems to work, but I can't find a specification that states that explicitly  - is it undefined behavior/implementation specific and just happen to work for me, or the code posted above is valid (ptr1 is guaranteed to point to moved pointer as long as it stays alive)?</p>