这篇文章探讨了 C++ 中 constexpr 分配机制的难点,包括如何确保常量分配的内存能够安全地持久化到运行时(常量销毁问题),以及如何确定何时可以将分配的内存内容用作常量表达式(常量访问问题)。文章分析了两种解决方案:一是引入 propconst 限定符或说明符,在类型系统层面区分深浅 const,从而实现更严格的约束;二是提供 std::mark_immutable_if_constexpr() 函数,让开发者手动标记不可变的分配,但需要信任开发者正确使用。文章最后比较了两种方案的优劣,并倾向于更简单易懂的 std::mark_immutable_if_constexpr() 方案。