Gentlemen, this is Clang; we can differentiate between '1' as a literal value and '1' resulting from a template- or macro-metaprogrammed computation. The former case has no legitimate examples and can be safely assumed to be a pre-C99 flexible array member. The latter case should still be diagnosed using -Warray-bounds. John.