https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111535
--- Comment #3 from Eddie Nolan <eddiejnolan at gmail dot com> --- I'm not a wording expert, but to me, the sentence, "A range adaptor closure object is a unary function object that accepts a range argument," has a different meaning than "A range adaptor closure object is a unary function object that accepts *only* range arguments." The first sentence doesn't seem to rule out adding other non-range overloads to the function call operator. I haven't thought deeply about it, but at first glance I agree that it's more desirable to accept 'X | closure' iff 'closure(X)' is valid. I just disagree that the wording allows it.