Ok. Maybe it's buggy but it'd still be unwise to change, I believe.
Besides, I don't consider it any less odd that static lfuns still alter public behavior. I.e. the following illustrates the point I'm arguing just as well:
class X (int n) { static X `+ (int n2) {return X (n + n2);} static string _sprintf() {return "X(" + n + ")";} }
int main() { werror ("%O\n", X(3) + 5); }