C++具有动态内存分配的 constexpr 函数
C++ constexpr functions with dynamic memory allocations
作为一个说明性的例子,给定一个constexpr字符串文字,我想将其转换为另一个constexpr数据结构。由于这种转换纯粹是无副作用的,我希望有一种在编译时做到这一点的方法(没有预处理器,但具有标准的C++语言功能(。
现在,我确信在某一时刻,我读到了有关 C++2a(或更高版本(的潜在未来功能添加的信息,该功能将允许在 constexpr 函数内进行动态内存分配,这绝对是我问题的解决方案。 - 但我找不到那篇告诉我的文章了。
有没有办法在 constexpr 上下文中执行动态内存分配 C++,或者有谁知道哪篇论文提出了这个建议?
此类功能计划于20 C++发布。但是,分配的内存不得泄漏到运行时中。如果您的 constexpr 数据结构需要保存分配的内存,这可能会有问题。您可以在 P0784 中找到有关该功能以及非瞬态分配存在问题的原因的更多信息。
相关文章:
- 条件constexpr函数
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- constexpr 函数获取常量字符*
- 如何在 constexpr 函数中实现回退运行时
- 在非 constexpr 函数中作为左值传递的变量上使用 'constexpr' 函数
- NVCC 错误:string_view.h:constexpr 函数返回是非常量
- constexpr函数中的静态constexpr变量
- 在 constexpr 函数中断言
- G++ 编译器是否在未使用返回值的情况下将 constexpr 函数视为常规函数?
- constexpr 函数的常量引用参数:gcc/msvc vs clang/icc
- constexpr 函数在编译时获取值,即使我的变量不是 constexpr
- 如何正确地对 constexpr 函数进行单元测试
- 为什么 std::launder 是一个 constexpr 函数?
- 我可以使用 constexpr 函数声明一个静态数组吗?
- 用于连接向量的 Constexpr 函数
- 在非constexpr函数上添加的constexpr限定符不会触发任何警告
- 为什么 std::get<T> 其中 T 是调用 constexpr 函数失败的结果?
- 在constexpr函数中插入许多模板
- 在enable_if_t中调用 constexpr 函数
- constexpr 函数中的 for 循环无法使用 MSVC 19.23 进行编译