Intermediate step: refactor for_each_n to use pure tag dispatching
copy structure reworked, small additional changes
Merge remote-tracking branch 'upstream/n3960' into n3960