Changes on review:

1) Misconception with destructors is fixed;
2) Now returns ref to the first/last element in the list instead of copying the value;