This patch fixes PR c++/31388. This PR is about the fact that "!0i"
is not accepted by G++, which is a regression. I fixed this by
decreeing that complex types (which are a GNU extension to ISO C++)
are in fact "arithmetic types" in the sense of the standard.
Everything else then "just works".
I think this makes sense: like other arithmetic types, the usual
arithmetic operations are available, etc. However, before I check
this in, I'd like the opinions of my fellow C++ maintainers: does
anyone see a problem with this approach?