【发布时间】:2021-09-14 08:31:52
【问题描述】:
@Vittorio Romeo 对this 问题的回答很好地解释了constinit。在他的回答中,提到了以下内容:
constexpr不等同于const constinit,因为前者要求持续销毁,而后者则没有。
虽然很清楚,但我看不到它有任何实际用途。在这种情况下将使用const constinit,但不能使用constexpr。在我能想到的任何情况下,对于可以是 constinit 并且在运行时无法通过 const 更改的任何类型 T,常量破坏 应该是一个微不足道的限制添加。我错过了什么吗?
【问题讨论】:
-
如果你有一个你不能改变的类型并且析构函数不是 constexpr?前几天我也遇到过类似的情况,幸运的是我控制了析构函数的代码并且可以更改它。
-
@bitmask 所以这可能有用的唯一情况是如果你不能更改类型
T? -
我的意思是,为什么 dtor 是非 constexpr 而 ctor 是有正当理由的。我就是想不出一个。
-
也许有些构造函数是 constexpr,但其他函数/ctors 不能是(并且正在分配资源),那么析构函数必须是非 constexpr?
-
@Brotcrunsher:需要有一个用例吗?为什么要在标准中添加语言来阻止人们使用特定的限定词组合,仅仅因为其他一些限定词可能更适合他们?
标签: c++ constants c++20 constinit