I have only been using raw pointers for linked list with templates. For example, the member data, Node* head; and when I am inserting a node one of the
Node* head;
Structure will look like
template struct Node { T data; shared_ptr> next; };
Creating of node will look like
shared_ptr> head(new Node);
or
auto head = make_shared(Node{ 1,nullptr });