在哪个实际案例中"const constinit"有用?



@Vittorio Romeo对这个问题的回答很好地解释了constinit。在他的回答中,提到了以下内容:

constexpr不等同于const constinit,因为前者要求持续销毁,而后者则不然。

虽然很清楚,但我看不出它有任何实际用途。在哪种情况下会使用const constinit,但constexpr不能。在我能想到的任何情况下,对于任何类型的T,它可以是constinit,并且在运行时不能通过const进行更改,常量销毁应该是一个微不足道的限制。我是不是错过了什么?

如果您对外部代码有依赖,无论出于何种原因都无法更改,并且看起来像这个

struct A {
~A() {}
};

这意味着A不是字面类型,因为它没有constexpr析构函数(很可能是疏忽(。然而,它可以在编译时构造,因此是constinit

一个可能的实际案例:

struct AtExit
{
~AtExit() { std::cout << "End"; }
};

演示

(通过使用函子对类进行模板化更有用(。

相关内容

  • 没有找到相关文章

最新更新