From c++ 11 i can write code without create and deleting raw pointers. 
But is it the right way to go- Should i always use smart pointers (either shared, unique or weak) or are there situations in which i should delete objects by myself?