在元编程领域,出现了一种有趣的 constexpr 计数器技术,称为有状态元编程。这种复杂的技术引起了开发人员的钦佩和不安。问题依然存在:随着 C 17 的出现,它的合法性是否被重新审视?
C 14 中的有状态元编程
正如提供的代码片段所示,在C 14 利用友元声明、ADL 和 constexpr 创建一个在调用之间保持其状态的计数器。尽管看似神秘,但这种技术在 C 14 下是合法的。
The Dark Cloud: CWG Issue 2118
但是,这种做法引起了 C 标准的审查委员会,特别是通过活跃的 CWG 第 2118 期。委员会认识到该技术的模糊性,并主张将其划分为
C 17 的沉默姿态
尽管 CWG 表示担忧,但 C 17 并未明确解决此问题。这意味着有状态元编程在 C 17 中仍然合法,尽管有警告称其命运可能在未来改变。
追溯性影响
应该禁止机制设计出来后,有状态元编程可能会被追溯认为是格式错误的。这将使问题中提供的代码片段无效,从而给现有代码库带来潜在风险。
结论
有状态元编程的未来仍然不确定。虽然它在 C 17 中仍然合法,但 CWG 对该技术的不满表明它的日子可能屈指可数了。采用此技术的开发人员应该意识到这种潜在的警告,并监控 C 标准中的未来更新,以确保其代码的完整性。
以上是有状态元编程在 C 17 中合法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!