私有内部类中是否可以有静态 constexpr 字段?

Fel*_*bek 1 c++ inner-classes constexpr c++14

我有一个 C++14 项目,无法使用 C++17 内联变量。

// myclass.h
class MyClass {
  struct Inner {
    using StringArray = std::array<const char*, 1>;
    static constexpr StringArray kStrings{{ "foo" }};
  }
}

//myclass.cpp
constexpr MyClass::Inner::StringArray kStrings;
//                 ^^^^^                   
// Error: "Inner" is a private member of "MyClass"
Run Code Online (Sandbox Code Playgroud)

是否可以让它在 C++14 中工作,或者只能在 C++17 中工作?

Art*_*yer 5

您试图为名为 的新文件范围变量给出定义::kStrings。您想改为定义静态成员MyClass::Inner::kStrings

constexpr MyClass::Inner::StringArray MyClass::Inner::kStrings;
Run Code Online (Sandbox Code Playgroud)