double-linked list, public inheritance, dynamic_cast, exceptions, move semantics