为什么必须在类声明之外再次定义完全初始化的constexpr成员?
这不是多余的,因为它是静态的,常量的并且已经在声明中完全初始化了吗?
这是一个例子。我正在使用C ++ 17
#include <iostream>
struct Settings {
static constexpr const char * str[2] = {"Hello 1", "Hello 2"};
};
void print(int i) {
printf("%s\n", Settings::str[0]); // Does not need a definition
printf("%s\n", Settings::str[i]); // Needs a definition
}
int main() {
print(1);
return 0;
}
该行:
printf("%s\n", Settings::str[i]);
生成此错误:
undefined reference to `Settings::str'
但不是这句话:
printf("%s\n", Settings::str[0]);
由于