I need a const object of type std::set
, which will be used in many other cpp files.
Since the initialization order of each translation unit is undefined, I may get an empty set when I initialize other const objects with this std::set
object.
So, I want make this std::set
as constexpr
, but it can not be compiled.
I want to have:
constexpr std::set<int> EARLIER_SET = { 1, 2, 3 };
Is there a way to do this, or none at all?
You cannot use constexpr
here since std::set
has no constexpr
constructors.
What you can do though is declare the variable as an inline const
variable and that will allow you to include it in every translation unit and provide an initializer. That would look like
//header file
inline const std::set<int> EARLIER_SET = { 1, 2, 3 };
Not at all in the standard library.
But you might be interested in: https://github.com/serge-sans-paille/frozen
constexpr frozen::set<int, 3> EARLIER_SET = { 1, 2, 3 };
would then be valid.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With