linked list c++11 shared_ptr