如何解决在哪种实际情况下“const constinit”有用?
this 对 @Vittorio Romeo 问题的回答很好地解释了 constinit
。在他的回答中,提到了以下几点:
constexpr
不等同于 const constinit
,因为前者要求持续销毁,而后者不要求。
虽然很清楚,但我看不到它的任何实际用途。在这种情况下可以使用 const constinit
,但不能使用 constexpr
。在我能想到的任何情况下,对于可以是 T
并且不能在运行时通过 constinit
更改的任何类型 const
,constant destroy 应该是一个添加的微不足道的限制。我错过了什么吗?
解决方法
如果您依赖于外部代码,无论出于何种原因都无法更改,它看起来像这样
struct A {
~A() {}
};
这意味着 A
不是文字类型,因为它没有 constexpr
析构函数(很可能是疏忽)。然而,它可以在编译时构建,因此是一个 constinit
。
一个可能的实际案例:
struct AtExit
{
~AtExit() { std::cout << "End"; }
};
(使用函子模板化类更有用)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。