JavaScriptで+++は許されない+ ++は許される を読んで書いた。
C / C++ の場合、許される。
というわけで、JavaScript で許されないのは「解析できないから」というよりも、これを合法とすることで幸せになる人よりも不幸せになる人のほうが多そうだったので違法にした、ということだと思う。
追記。
「JavaScript で許されないのは」と書いたものの、上記記事のコメント にある通り、本当は許されるっぽい。
手元で試しても許されていた。
c++
#include <stdio.h>
struct Foo{
bool operator&() const { return 0; }
};
int main() {
int a=0, b=0;
printf( "%d\n", a+++b); // okay. (a++) + b
printf( "%d\n", a---b); // okay. (a--) - b
int * pa=&a;
int ** p = &pa;
printf( "%d\n", a***p); // okay. a * (*(*p))
Foo e;
printf( "%d\n", a&&&e); // okay. a && (&e)
return 0;
}
ちなみに、 a+++++b
は (a++) + (++b)
とはならず、エラーになる。
これはたぶん、ここを頑張っても意味ないだろ、と思って頑張らなかったからだと思ってるんだけど、どうだろう。