gccでzero-sized array
#include <iostream> int main() { char dummy[0]; return 0; }
と
#include <iostream> int main() { static_assert( ( 0 == 1 ), "bad" ); return 0; }
結果として、上はVC++のみ、下はVC++、gccともにエラーでした。上はgccにて-Wallでは無く-pedantic有りの時のみ警告でした。
警告文の内容が"ISO C++ forbids zero-size arrays...."と書いてあったので規格で禁止されていることはわかっているみたいです。
zero-sized arrayが作れるのはちょっと気持ち悪いなぁ、と思ってしまいました(まぁ、構造体の最後に大きさ0の配列作ってhogehogeみたいなテクニックがあるのは知っていますが)。
後、ModernC++DesignにSTATIC_ASSERTの実装が書いてあっててっきり0サイズの配列を使ってると思っていましたが0xからはキーワードになってて上記のような結果から実装が異なるみたいですね。確かにBoostのSTATIC_ASSERTも実装が違ったはずなのでそれは十分に有り得る話なのですが....
というメモ書きdone......