在我看来,拥有"总是返回5的功能"正在破坏或淡化"调用函数"的含义.必须有一个原因,或者需要这种能力,或者它不会出现在C++ 11中.为什么会这样?
// preprocessor.
#define MEANING_OF_LIFE 42
// constants:
const int MeaningOfLife = 42;
// constexpr-function:
constexpr int MeaningOfLife () { return 42; }
Run Code Online (Sandbox Code Playgroud)
在我看来,如果我编写了一个返回字面值的函数,并且我进行了代码审查,有人会告诉我,我应该声明一个常量值而不是写回返5.
如果我有一个函数(比方说,一个大阵列)内的变量,它是有意义的声明它既static和constexpr?constexpr保证数组是在编译时创建的,那么它会static没用吗?
void f() {
static constexpr int x [] = {
// a few thousand elements
};
// do something with the array
}
Run Code Online (Sandbox Code Playgroud)
static在生成的代码或语义方面,实际上是在做什么吗?