作为constexpr std::string
和 constexpr std::vector
已被 C++20 接受,这些将如何使用?链接的论文在细节上非常简短。我们是否需要指定特殊的 constexpr
分配器,使编译时字符串/vector 与其正常等价物不兼容?
最佳答案
这两篇论文很大程度上依赖于P0784 ,其中讨论了编译时分配的工作方式。
不完整的答案:
- 只有
std::allocator
可以工作。 - 所有分配都被跟踪,并且必须在编译完成之前解除分配。这意味着您可以在编译时进行操作,但不能初始化要在运行时使用的
string
和vector
变量。 (就我个人而言,我认为此限制很有可能会在标准的 future 版本中取消 - 但这只是我的意见。)
关于c++ - C++20 constexpr 容器将如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57163315/