Use std::make_shared<> to create shared pointer

Using std::make_shared<>[1] will safe one allocation compared
to std::shared_ptr<T> tmp(new T(...)).

[1] http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared