В очередной раз пытаюсь написать перечисление с возможностью перебора элементов.
Возникает следующий вопрос:
в нижеприведённом коде вектор s_enum будет содержать значения в том же порядке, что они записаны в классе или же порядок не гарантируется?
class SeverityEnum
{
public:
using value_type = const char*;
private:
inline static std::vector<value_type>& RefValues()
{
static std::vector<value_type> s_enum;
return s_enum;
}
inline static value_type EnumValue(const char* pStr)
{
value_type item{pStr};
RefValues().push_back(item);
return item;
}
public:
inline static const value_type WARNING = EnumValue("warning" );
inline static const value_type MINOR = EnumValue("minor" );
inline static const value_type MAJOR = EnumValue("major" );
inline static const value_type CRITICAL = EnumValue("critical");
};