https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78830
--- Comment #4 from Andrzej Krzemienski <akrzemi1 at gmail dot com> --- Just to clarify, what I request for this "unconditional" check is not the existence of all operators, but only the check for the iterator_tag (we expect a bidirectional iterator). That is, the problem that I believe needs immediate solution is not improving the error messages a la concepts, but preventing the current situation where GCC assumes that the iterator passed to prev() is at least BidirectionalIterator, and based on this assumption it tag-dispatches the call to advance() overload for ForwardIterators, where it calls operator++.