Using C++11’s Smart Pointers