This is the kind of thing I don't want to have to think about as a programmer. The compiler should just make it work.

But you have to. Ambiguities hint at lack of redundancies that also affects code reading. When you quickly scan something like `file.open` vs `file::open` the former is also more unclear to a reader without more context.