use STATIC_ASSERT macro instead of calling _Static_assert directly