static_assert is syntactic sugar imported by <assert.h>.
With gcc, here is a bit of confusion on which is defined when. gcc 4.6
supports _Static_assert, but assert.h has static_assert only when std==c11. In
gcc 4.7, static_assert is defined by assert.h even if std!==c11 (apparently).
I use the following chunk of code to get as much as is available: