これはめちゃくちゃなセクションです。_head->prev を nullptr に逆参照することを意図していますが、prev がない場合はクラッシュするため、そのクラッシュを処理しようとしています。に達すると
if( _head )
(!_head->prev)
前がないのでぐちゃぐちゃ。この瞬間を処理して中断しないようにする if ステートメントの書き方がわかりません。prev がない場合は、 --_size tmpnode を削除して結果を返すようにしたいだけです。
template <class list>
list linked_list<list>::pop_front()
{
assert( !empty() );
node_ptr_t tmpNode(_head);
list result = _head->data;
if(_head->next)
_head = _head->next;
else
_head = _tail;
if ( _head )
if(!_head->prev)
{
--_size;
delete tmpNode;
return result;
}else{
_head->prev = nullptr;
}else {
_tail = nullptr;
}
//_head ? _head->prev=nullptr : _tail=nullptr;
--_size;
delete tmpNode;
return result;
}