Is this safe?
std::unique_ptr<A> ptr(new A[100]);
When ptr goes out of scope and its destructor called, will it incorrectly delete the pointer, or delete[] it?
If you correctly specify the pointed-to type as A[] it will correctly delete[] the pointer because there is a template specialization of unique_ptr for array types.
Note that you would not have had the opportunity to go wrong here if the type could be automatically inferred. That would require the expression that produces the pointer to be a function call (in the same vein as std::make_pair), like this:
auto ptr = make_unique(new A[100]);
This is a useful utility that's missing from C++11, but it has been added to C++14.