Ok, I did know about trigraph (or rather their lack of support in GCC), but this was new to me.
It seems, their usage is only safe when including the header file <iso646.h> resp. <ciso646>. Cxx++ Compilers do not need to natively support them, if I completely follow this, although I could not really find the statement when this xx actually changed. (Which makes sense, I even have written C programs where "or" stood for over_range (and "ur" for under_range), and I vaguely remember some numerical recipes code [which predates C95 of course].) So having these keywords optional is a good idea.