我可以制作一个std::set的constexpr对象吗



我需要一个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 };

那么将是有效的。

相关内容

  • 没有找到相关文章

最新更新