2

我需要一个 std::set 的 const 对象,它将在许多其他 cpp 文件中使用。由于应用程序每个部分的初始化顺序未定义,因此当我使用此 std::set obj 初始化其他 const 对象时,我可能会得到一个空集。

所以,我想把这个 std::set 设置为 constexpr,但它不能被编译。我希望有:

constexpr std::set<int> EARLIER_SET = { 1, 2, 3 };

有没有办法得到它?还是根本没有?

4

2 回答 2

3

根本不在标准库中。

但您可能对以下内容感兴趣:https ://github.com/serge-sans-paille/frozen

constexpr frozen::set<int, 3> EARLIER_SET = { 1, 2, 3 };

那么将是有效的。

于 2019-10-22T15:14:48.357 回答
3

你不能constexpr在这里使用,因为std::set没有constexpr构造函数。

您可以做的是将变量声明为inline const变量,这将允许您将其包含在每个翻译单元中并提供一个初始化程序。那看起来像

//header file
inline const std::set<int> EARLIER_SET = { 1, 2, 3 };
于 2019-10-22T15:15:54.490 回答