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