c++ - 我怎么知道 C++ 编译器是否在编译时计算表达式?

标签 c++ optimization c++11

我有这样的代码

const int Value = 123 * 2 + GetOffset();

GetOffset 是一个返回 intconstexpr 函数。

如何确保此表达式确实在编译时求值?

最佳答案

你为什么不对值也使用 constexpr 呢?我认为它会要求编译器对其进行评估,

constexpr int Value = 123 * 2 + GetOffset();   

如果函数 GetOffset() 很简单并且满足 constexpr 的要求。

要求是

  1. 该函数必须具有非 void 返回类型。

  2. 函数体不能声明变量或定义新类型。

  3. 正文可能只包含声明、空语句和单个返回 声明。

由于Getoffset()返回int,所以符合第一个。

关于c++ - 我怎么知道 C++ 编译器是否在编译时计算表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18513107/

相关文章:

r - 昂贵的 for 和 if else 循环的替代方案

c++ - vector 类如何接受多个参数并从中创建一个数组?

c++ - 为什么 fill_n() 不适用于 vector.reserve()?

c++ - 如何使用三元运算符创建指向多态类的唯一指针?

c++ - 我如何打印 UTF-8 字符 C++?

c++ - 绕过#define'd 宏?

C++ : create a tuple with vector of strings

java - 为什么 JIT 会在启动时编译一些方法?

c++ - 您可以引用在结构中定义的友元运算符吗?

c# - 简化winforms代码跨线程调用