std::vector的c++ constexpr实现[重复]

qojgxg4l  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(181)
    • 此问题在此处已有答案**:

Compiler disagreement on using std::vector in constexpr context(1个答案)
12小时前关门了。
为什么clang不支持constexpr std::vector
我有一个使用std::allocatorstd::construct_at/std::destroy_at的基本实现,它在constexpr函数中运行良好。
https://godbolt.org/z/GfeE4KEPx

constexpr auto test() -> int {
    Vec<int> a;
    a.push(1);
    a.push(2);
    a.push(3);
    a.push(4);

    int s = 0;
    for (int i : a) {
        s += i;
    }
    return s;
}

auto main() -> int {
    constexpr int a = test();
    static_assert(a == 10);
    return 0;
}
ax6ht2ek

ax6ht2ek1#

c++20有constexpr std::vector,gcc的libstdc ++(自gcc 12起)和clang的libc ++(自clang 15起)都实现了它:https://godbolt.org/z/qsfhxWe6K.

相关问题