@JLBorges : Thanks alot for the answer.
I understand that the default deleter (specialization for arrays) would suffice for requirements [1],[2] & [3] but don't we lose the choice of do something custom with default_delete.
My apologies for not adding this requirement before.
What if we have one more requirement ?
[1] Do not use new operator explicitly.
[2] Raw char* pointer can not be used.
[3] Use unique_ptr and make_unique for constructing the string object.
and
[4] Print a message : "unique_ptr is going out of scope" when the destructor for unique_ptr is called
(Please note the requirement is for uniue_ptr destructor and not string).
You have explained how we can use a custom deleter with unique_ptr here :
http://www.cplusplus.com/forum/general/247955/#msg1093306
but it does not use make_unique.
Is it that we can't specify a custom deleter with make_unique at all ?
Thanks again :)