c++ copyable
5 ways of passing unique pointer to a function in C++