733167f9d5
As clarified by LWG 3265, std::move_iterator is supposed to have an assignment operator that converts from a different specialization of std::move_iterator, which performs an assignment. That has always been missing from libstdc++, so assigning a different type actually performs a converting construction, then an assignment. This is non-conforming for the (fairly contrived) case where the converting assignment is well-formed but the converting construction is not. * include/bits/stl_iterator.h (move_iterator::operator=): Define. * testsuite/24_iterators/move_iterator/dr3265.cc: New test.