Suppose I have the following class:
class foo {  
    std::unique_ptr<blah> ptr;
}
What's the difference between these two:
foo::foo(unique_ptr p) 
   : ptr(std::move(p))
{ }
and
foo::foo(unique_ptr&& p)
   : ptr(std::move(p)
{ }
When called like
auto p = make_unique<blah>();
foo f(std::move(p));
Both compile, and I guess both must use unique_ptr's move constructors?  I guess the first one it'll get moved twice, but the second one it'll only get moved once?
 
     
     
    