无法创建 constexpr std::vector

新手上路,请多包涵

我可以创建 constexpr std::array:

 constexpr std::array<int,5> values {1,2,3,4,5};

它工作正常。但我无法创建 constexpr 向量:

 constexpr std::vector<int> vec = {1,2,3,4,5};

它给了我一个错误:

the type 'const std::vector<int>' of constexpr variable 'vec' is not literal constexpr std::vector<int> vec = {1,2,3,4,5};

原文由 Leo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

AFAIK initlializer_list 的构造函数 std::vector<> 未声明 constexpr

原文由 cdonat 发布,翻译遵循 CC BY-SA 3.0 许可协议

有一个提案要制作 std::vector constexprhttps ://github.com/ldionne/wg21/blob/master/generated/p1004r1.pdf 有一个关于即将到来的完整的讨论 C++20/23 更改: https ://youtu.be/CRDNPwXDVp0?t=3080 所以再次检查 C++20

[编辑]: constexpr std::vector 已被批准用于 C++20https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/

[编辑 2019-10]:gcc 中继(带有 --std=c++2a 标志)已开始实施 constexpr newconstexpr vector 的先决条件)。见: https ://youtu.be/FRTmkDiW5MM?t=372

[编辑 2021-11]: constexpr std::vectorconstexpr std::basic_string 现在都在 gcc 12 中实现https://en.cppreference.com/ )

原文由 user643011 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏