Please look at the full example. The full example was done with copy/paste from compilable code.
What I placed in my last post was my high level mental model. The mental model likely left out some important detail from the full example. I didn't try compiling the mental model example from my post or testing it in SE, I only have limited time to dedicate to test cases, and I thought that putting something in the post may be easier for you than finding the full example, while at the same time it minimized my time to develop a small test case that I can post in a public forum.
I'm sure the full example has some important detail I left out. In fact I see the full example does have begin() return an iterator with those operators overloaded. I guess I'm not an expert in range based for loops for creating a mental model, but my full example has real compilable code that meets the rules you specified.
Please take the small amount of time necessary to retrieve it from support and check it out. I think I'm seeing this happening over and over again in my code base and it is hard to code browse now. I don't want to keep making new, similar test cases before you look at the first one.