我需要一个 std::set 的 const 对象,它将在许多其他 cpp 文件中使用。由于应用程序每个部分的初始化顺序未定义,因此当我使用此 std::set obj 初始化其他 const 对象时,我可能会得到一个空集。
所以,我想把这个 std::set 设置为 constexpr,但它不能被编译。我希望有:
constexpr std::set<int> EARLIER_SET = { 1, 2, 3 };
有没有办法得到它?还是根本没有?
我需要一个 std::set 的 const 对象,它将在许多其他 cpp 文件中使用。由于应用程序每个部分的初始化顺序未定义,因此当我使用此 std::set obj 初始化其他 const 对象时,我可能会得到一个空集。
所以,我想把这个 std::set 设置为 constexpr,但它不能被编译。我希望有:
constexpr std::set<int> EARLIER_SET = { 1, 2, 3 };
有没有办法得到它?还是根本没有?
根本不在标准库中。
但您可能对以下内容感兴趣:https ://github.com/serge-sans-paille/frozen
constexpr frozen::set<int, 3> EARLIER_SET = { 1, 2, 3 };
那么将是有效的。
你不能constexpr
在这里使用,因为std::set
没有constexpr
构造函数。
您可以做的是将变量声明为inline const
变量,这将允许您将其包含在每个翻译单元中并提供一个初始化程序。那看起来像
//header file
inline const std::set<int> EARLIER_SET = { 1, 2, 3 };