首页 > 后端开发 > C++ > 有状态元编程在 C 17 中合法吗?

有状态元编程在 C 17 中合法吗?

DDD
发布: 2024-11-18 21:54:03
原创
283 人浏览过

Is Stateful Metaprogramming Legal in C  17?

有状态元编程的未来不确定吗?

在元编程领域,出现了一种有趣的 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板