Similar to enqueueing a new element, dequeuing an element in the Deque data type can also be performed from both the front and back sides. When we are going to dequeue from the front side, which is done by using the DequeueFront() operation, we initially assign the new m_front to the Next pointer of the current m_front node. If the new, current m_front exists then it points its Previous pointer to NULL. Now, it's safe to delete the frontmost element. The implementation of the DequeueFront() operation should be as follows:
template <typename T>void Deque<T>::DequeueFront(){ // Do nothing if deque is empty if(m_count == 0) return; // Save the current m_front // to a new node DoublyNode<T> * node = m_front; ...