Ömm, igazából a static_assert kicsit hülyén van megcsinálva szerintem. Alapvetően az assert-nek el kéne fogadnia egy sima boolean értéket is, és ha az false, akkor assertion hibát generálni, az üzenetnek (vagy bárminek, aminek szerinte ott kell lenni) opcionálisnak kéne lennie.
Csak mivel C, gondolom ezt nem lehetett egy definicióval megoldani, a static_assert fejlesztői meg lusták voltak kettő definiciót odarakni.