gpt4 book ai didi

c++: constexpr 函数在与 std::cout 一起使用时在编译时不求值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:01 27 4
gpt4 key购买 nike

<分区>

我是 C++ 的新手,目前遇到了 constexpr。据我所知,constexpr 函数是在编译时求值的。这是我的源代码:

constexpr int sum(float a, int b)
{
return a + b;
};

int main(int argc, char *argv[])
{
std::cout << sum(1, 2) << std::endl;
}

这是一个简单的函数,仅求和为整数。问题是,当我在 return a + b 处设置断点并开始调试时,断点被击中,这意味着该函数未在编译时求值。但是当我将主要功能更改为此时:

int main(int argc, char *argv[])
{
constexpr int var = sum(2, 2);
std::cout << var << std::endl;
}

断点未命中,这意味着该函数在编译时求值。我有点困惑,为什么在第一种情况下不评估函数?

附言我正在使用 visual studio 2017。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com