空白と演算子と優先順位と
空白による優先順位のコントロール、ブックマークコメントで残念だという声が早速あったので、再考してみました。
空白による優先順位は、「思っていた優先順位と違ってた!」というユーザーの意図したのと違う動作を食い止めるためでした。
しかし、空白による優先順位のコントロールがあることによって逆に、「思っていた優先順位と違ってた!」という事態が起こるであろうという疑問視もわかるものでした。
ということで、折衷案にします。
a + b>>c;
というような、演算子の優先順位と食い違っている空白の配置がなされている場合、それをコンパイルエラーとする、という仕様にします。
次のようにするとエラーはなくなります。
a+b >> c; // ok a + b >> c; // ok a+b>>c; // ok