これもできた。
#define STATIC_ASSERT(expr) static_assert(expr, #expr) int main() { constexpr int ar[] = {1, 2, 3}; STATIC_ASSERT(ar[0] == 1); STATIC_ASSERT(ar[1] == 2); STATIC_ASSERT(ar[2] == 3); }
std::arrayはconstexpr対応してないのでまだできない(N3225)。
#include <array> #define STATIC_ASSERT(expr) static_assert(expr, #expr) int main() { constexpr std::array<int, 3> ar = {1, 2, 3}; STATIC_ASSERT(ar[0] == 1); // エラー!operator[]がconstexprじゃない STATIC_ASSERT(ar[1] == 2); STATIC_ASSERT(ar[2] == 3); }