読者です 読者をやめる 読者になる 読者になる

constexprな配列

C++

これもできた。

#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);
}