http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58403
--- Comment #8 from Paolo Carlini <paolo.carlini at oracle dot com> --- Hi, (In reply to Jonathan Wakely from comment #7) > http://gcc.gnu.org/wiki/VerboseDiagnostics#missing_static_const_definition > > You odr-use a static member variable, so it must have a definition. I may be missing some C++11 specifics, but I understand the bug report this way: since the implementors have the leeway of defining those operators as taking the arguments by value or be const ref, and since we are essentially talking about ptrdiff_ts, which don't really want by ref, why using by const ref unnecessarily which introduces an odr-use? If you like not a proper bug, but a QoI issue, a rather simple one. Taking also into account, as submitter correctly noticed, that we have already be value for move_iterator and reverse_iterator. Does this make sense?