Modern approaches to memory management applications using smart pointers and move semantics : Udacity C++ Nanodegree Course project