No that is not a bug. There are three parallel sets of operators considered. Members, non-member operators, and builtins.
The non-member ones are looked up by normal unqualified+ADL lookup, ignoring all class member functions. Hence the global operator is hidden by a lexical more closer one (and an intervening member function wouldn't have hidden other non-members).
Note that overload resolution takes place after name lookup1; in your case the name operator++
was found, but no appropriate overload.
If Bar had been declared globally, and/or the other operator in namespace asdf, ADL (in the former case) or ordinary unqualified lookup (in the latter case) would have dragged the operator in.
1: Overload resolution (...) takes place after name lookup has succeeded.
(C++ Standard)