Proposed resolution:
This wording is relative to N3691.
Modify [forwardlist.ops] p6 as indicated:
void splice_after(const_iterator position, forward_list& x, const_iterator i); void splice_after(const_iterator position, forward_list&& x, const_iterator i);[…]
-6- Effects: Inserts the element following i into *this, following position, and removes it from x. The result is unchanged if &x == this and the following condition is satisfied: position == i or position == ++i. Pointers and references to *++i continue to refer to the same element but as a member of *this. Iterators to *++i continue to refer to the same element, but now behave as iterators into *this, not into x.
Modify [list.ops] p7 as indicated:
void splice(const_iterator position, list& x, const_iterator i); void splice(const_iterator position, list&& x, const_iterator i);-7- Effects: Inserts an element pointed to by i from list x before position and removes the element from x. The result is unchanged if &x == this and the following condition is satisfied: position == i or position == ++i. Pointers and references to *i continue to refer to this same element but as a member of *this. Iterators to *i (including i itself) continue to refer to the same element, but now behave as iterators into *this, not into x.