Is Bjarne wrong about this example of ADL, or do I have a compiler bug?
It’s not a bug in the compiler. ADL is used to lookup functions not arguments. operator<< is the function found through ADL here by looking at the parameters std::cout and (what should be) std::endl.