【发布时间】:2021-02-13 07:49:46
【问题描述】:
如果我想要一个行为与宏相同的函数,即在编译时计算值,我可以使用 constexpr 函数吗?
例如,我是否可以用 foo 函数替换 Foo 宏,并且在以下所有情况下仍然有编译时评估结果:
#define FOO(x) (x + 2)
constexpr int foo(int x) {
return x + 2;
}
void doSomething(int a) { ... }
int main() {
int res1 = foo(3);
doSomething(foo(4));
const int res2 = foo(5);
return 0;
}
【问题讨论】: