The error has nothing to do with the use of unique_ptr.
The problem is that you are passing a Person object as argument to the << operator. You either have to overload the << for the Person class, or pass each member that you want to print individually.
Also a quick tip. When making a unique_ptr, you can also use the std::make_unique() function. For example, line 18 could be rewritten like this (changing the class name):
1 2 3 4 5
p = std::unique_ptr<ThisIsAVeryLongClassName> (new ThisIsAVeryLongClassName); //awkward
p = std::make_unique<ThisIsAVeryLongClassName>(); //clean
With the first method, you have to specify the type twice, which can be confusing and cumbersome if the class has a long name.