When _GLIBCXX_CONCEPT_CHECKSdefined, it is.
__gnu_cxx::__function_requires< __gnu_cxx::__VA_ARGS__ >();
So your published code:
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
Solves the following:
__gnu_cxx::__function_requires< _InputIteratorConcept<_InputIterator> >();
Which one is related to:
void (_InputIteratorConcept<_InputIterator>::*__x)() _IsUnused = &_InputIteratorConcept<_InputIterator>::__constraints;
This creates an instance _InputIteratorConcept<_InputIterator>::__constraintsthat it uses typedefto break compilation when it _InputIteratordoesn't look like an iterator.
__glibcxx_requires_valid_range . ( ), , __last __first