C++(20):constinit

C++20增加了constinit关键字,用于修饰变量,表示该变量必须在编译期进行初始化,不能在运行期进行初始化。但是constinit变量并不是常量,可以在运行期被修改。

被声明为constinit的变量,只能通过常量,constexpr或consteval函数进行初始化。

#include 
using namespace std;

consteval int doPow(int a, int b)
{
  int m = 1;
  for(auto i = 0; i < b; ++i)
  {
	  m = m * a;
  }
  return m;
}

constinit int n = doPow(2, 4);

int main()
{
	cout<

运行程序输出

16

17

可见constinit变量在运行期是可以被修改的。

需要说明的是constinit变量不能放在函数中,因为constinit变量是在程序初始化阶段就被定义的,不能放在运行期定义变量的函数中。

你可能感兴趣的:(C/C++,c++)