порядок инициализации inline static const
От: B0FEE664  
Дата: 12.04.24 15:45
Оценка: 34 (1)
В очередной раз пытаюсь написать перечисление с возможностью перебора элементов.
Возникает следующий вопрос:
в нижеприведённом коде вектор 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");
};
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.