我需要一个std::set的const对象,它将在许多其他cpp文件中使用。由于应用程序每个部分的初始化顺序都是未定义的,所以当我用这个std::set obj.初始化其他const对象时,我可能会得到一个空集
所以,我想把这个std::设置为constexpr,但它无法编译。我想要:
constexpr std::set<int> EARLIER_SET = { 1, 2, 3 };
有办法得到它吗?还是根本没有?
此处不能使用constexpr
,因为std::set
没有constexpr
构造函数。
不过,您可以将该变量声明为inline const
变量,这样您就可以将其包含在每个翻译单元中,并提供一个初始值设定项。看起来像
//header file
inline const 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 };
那么将是有效的。