CS35 List Wrapper for STL List

stlList.h
#pragma once

/* Copyright (c) 2017
   Swarthmore College Computer Science Department, Swarthmore PA
   A. Danner, M. Gagne, J. Brody, Z. Palmer, A. Soni
   Distributed as course material for Fall 2017
   CPSC 035: Data Structures and Algorithms
 */

#include <iterator>
#include <list>
#include <stdexcept>

#include <cs35/list.h>

using std::list;
using std::runtime_error;

template <typename T>
class STLList : public List<T> {
public:
    int getSize();
    bool isEmpty();
    T peekHead();
    T peekTail();
    T get(int i);
    void insertAtHead(T value);
    void insertAtTail(T value);
    T removeHead();
    T removeTail();
private:
    list<T> actualList;
};

template <typename T>
int STLList<T>::getSize() {
    return actualList.size();
}

template <typename T>
bool STLList<T>::isEmpty() {
    return actualList.empty();
}

template <typename T>
T STLList<T>::peekHead() {
    if (actualList.empty()) {
        throw runtime_error("peekHead: empty list");
    } else {
        return actualList.front();
    }
}

template <typename T>
T STLList<T>::peekTail() {
    if (actualList.empty()) {
        throw runtime_error("peekTail: empty list");
    } else {
        return actualList.back();
    }
}

template <typename T>
T STLList<T>::get(int i) {
    if (i<0 || i>=actualList.size()) {
        throw runtime_error("get: invalid index");
    }
    return *(std::next(actualList.begin(), i));
}

template <typename T>
void STLList<T>::insertAtHead(T value) {
    actualList.push_front(value);
}

template <typename T>
void STLList<T>::insertAtTail(T value) {
    actualList.push_back(value);
}

template <typename T>
T STLList<T>::removeHead() {
    if (actualList.empty()) {
        throw runtime_error("removeHead: empty list");
    } else {
        T value = peekHead();
        actualList.pop_front();
        return value;
    }
}

template <typename T>
T STLList<T>::removeTail() {
    if (actualList.empty()) {
        throw runtime_error("removeTail: empty list");
    } else {
        T value = peekTail();
        actualList.pop_back();
        return value;
    }
}