- 此问题在此处已有答案**:
Compiler disagreement on using std::vector in constexpr context(1个答案)
12小时前关门了。
为什么clang不支持constexpr std::vector
?
我有一个使用std::allocator
和std::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;
}
1条答案
按热度按时间ax6ht2ek1#
c++20有constexpr
std::vector
,gcc的libstdc ++(自gcc 12起)和clang的libc ++(自clang 15起)都实现了它:https://godbolt.org/z/qsfhxWe6K.