unique_copy is overloaded on forward- and output_iterators for the result iterator; the output_iterator version requires Assignability on the input's value_type, which isn't required by the resolution to DR #241:
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#241 I'll attach a demonstration, which compiles on at least one other implementation. When using only input AND only output iterators, implementations must keep a temporary copy somewhere; is the standard implying that implementations use placement new for that? -- Summary: unique_copy requires assignability when using output iterators Product: gcc Version: 4.0.1 Status: UNCONFIRMED Severity: minor Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: squell at alumina dot nl http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26133