List_Node* node = copy(begin++, end);
This will call copy
again with the same arguments, recursing forever and never completing.
You should have been able to tell this by using a debugger to see where it crashed, and you would have seen that there were hundreds of calls to List::copy
, not the three calls you expected.
You want ++begin
not begin++