That is if ADL was triggered for an unqualified function call and a function was found via ADL that was not an operator, then a compiler may issue a warning. Currently it's not feasible to have such a warning, because we cannot not discriminate between "good" ADL and "bad" ADL.
Declaration of a custom swap function then will look like this:
void operator swap (A& fst, A& snd);
There are other things that might be included in the proposal:
1) requesting ADL via operator keyword at the call-site: operator swap(a, b);
2) searching "operator functions" among class members, thus allowing uniform function call syntax at least for them.
But before exploring those directions further I would like to get feedback on the main idea.
Regards,
Gregory