I tend to do this:
Code:
		void DeleteHelper(NodePtr_t & ToDelete, NodePtr_t & NodeToModify)
		{
			if (!ToDelete->m_Left)
			{
				if (!ToDelete->m_Right)
					NodeToModify = nullptr;
				else
					NodeToModify = ToDelete->m_Right;
			}
			else if (!ToDelete->m_Right)
			{
				NodeToModify = ToDelete->m_Left;
			}
		}
I also reduce the number of operator overloads that would be required to use the code by swapping a greater-than around to be a less-than.

I'm not sure I'd have that InsertHelper function myself. The logic of it is a bit strange.