A std::unique_ptr can be initialized with a raw pointer or another std::unique_ptr of compatible type.
These are 3 different cases of initialization of a std::unique_ptr:
A.
// Initialize with a raw pointer
std::unique_ptr<int> uiPtrA(new int(100));
B.
// Initialize with a std::unique_ptr<int> through copy
// Assume tmpPtr is a std::unique_ptr<int>
std::unique_ptr<int> uiPtrB(tmpPtr);
C.
// Initialize with a std::unique_ptr<int> through move
// Assume tmpPtr is a std::unique_ptr<int>
std::unique_ptr<int> uiPtrC(std::move(tmpPtr));
Which one of above cases of std::unique_ptr initialization will not compile?