所以一般constexpr函数功能,即在编译时执行,当传递给它的参数也constexpr所以以下:constexpr函数和硬编码参数
constexpr int function(int x, int y){
return x+y;
}
与声明的参数如下:
constexpr int x = 5;
constexpr int y = 6;
将在编译时执行,但随着参数如下声明:
int x=5;
int y=6;
它不会。我在想,如果我们在接下来的方式调用这个函数会发生什么:
function(5,6);
从图5的技术点和6是右值,但也没办法(我猜),他们可以强制转换为constexpr(如果我们可以一般地说关于铸造到constexpr),所以我认为它会在运行时执行。但是,在编译时间内x和y都是已知的,因此在运行时没有实际的理由来执行它。
所以我的问题是它是如何在现实生活中?将这个函数在运行时被执行或编译时
文字也是不变的表达。 –
如果是这样,请将其作为回答发布,我将接受它:) – DawidPi
如果优化程序在编译时也可能会调用带有非常量“x”和“y”的调用'function(x,y)'意识到'x'和'y'将始终具有相同的值。它不需要这样做,并且在需要'constexpr'的地方不能使用结果。 –