相关疑难解决方法(0)

constexpr std :: array with static_assert

#include <iostream>
#include <array>

int main(int argc, char **argv) {
    constexpr const std::array<int, 2> arr {{ 0, 1 }};
    constexpr const int arr2[] = { 0, 1};

    static_assert(arr[0] == arr2[0], "asdf");
    static_assert(arr[1] == arr2[1], "asdfasdf");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当编译gcc 4.8.24.9.1使用g++ test.cpp --std=c++11,编译成功.当编译clang 3.43.5利用clang++ test.cpp --std=c++11然而,编译失败:

test.cpp:8:16: error: static_assert expression is not an integral constant expression
        static_assert(arr[0] == arr2[0], "asdf");
                      ^~~~~~~~~~~~~~~~~
test.cpp:8:16: note: non-constexpr function 'operator[]' cannot be used …
Run Code Online (Sandbox Code Playgroud)

c++ static-assert constexpr c++11 stdarray

10
推荐指数
1
解决办法
1228
查看次数

标签 统计

c++ ×1

c++11 ×1

constexpr ×1

static-assert ×1

stdarray ×1