It should be
template <typename T>
void push_front(T&& value) {
// ...
new_head->value = std::forward<T>(value);
// ...
}
If value is U&& then it will give new_head->value = std::move(value);
If value is const U& then it will give new_head->value = value;
See When is a reference a forwarding reference, and when is it an rvalue reference?, Is there a difference between universal references and forwarding references?