Реализовать динамический список элементов типа T (T -- параметр).
Реализовать:
[на "тройку"] минимальный набор:
операции вставки элемента в начало и конец списка; удаления первого и последнего элемента; деструктор, освобождающий всю выделенную память; запретить использование конструктора копирования и оператора присваивания.
[на "четвёрку"] возможность перебора элементов:
класс-итератор, перебирающий элементы списка при вызове оператора ++
[на "пятёрку"] копирование списков:
корректно работающие конструктор копирования и оператор присваивания.
Реализовать абстрактный класс Expression с чисто виртуальными методами Expression *diff(); void print(); реализовать классы Number, Variable, Add (сумма), Sub (разность) с реализациями операции diff (дифференцирование) и print (печать на экран).