考虑一下代码
#includestruct Foo { constexpr static int n = 42; }; const int Foo::n; // note const, NOT constexpr int main() { std::cout << Foo::n; }
静态成员的定义与类内声明不同,即const
使用而不是constexpr
.代码是否合法,如果是,为什么?它用gcc和clang编译.如果我们互换const
并分别constexpr
在定义和声明中,它也会编译.我知道这constexpr
意味着const
变量,但不是相反.