list — doubly linked. forward_list — singly linked.
std::list:
1std::list<int> l = {1, 2, 3};2l.push_front(0);3l.push_back(4);4l.reverse(); // Can reverse
std::forward_list:
1std::forward_list<int> fl = {1, 2, 3};2fl.push_front(0);3// fl.push_back(4); // Error!4// fl.reverse(); // Error!
When to use: