http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59508
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- Users can specialize std::set<UserDefinedType>::find to do something different, e.g. write to a file, and it must not do that if they call std::find. It's not a matter of whether the type is the library's iterator type or not.