Trong C ++ 03, nó đã được đảm bảo (dù sao, đối với các liệt kê không được kiểm soát).
[dcl.enum] Khai báo liệt kê (nhấn mạnh của tôi)
6 Kiểu liệt kê cơ bản là một kiểu tích phân có thể biểu thị tất cả các giá trị liệt kê được xác định trong phép liệt kê. Nếu không có loại tích phân nào có thể đại diện cho tất cả các giá trị liệt kê, thì phép liệt kê không được định dạng. Nó được định nghĩa theo kiểu triển khai được sử dụng làm kiểu tích phân được sử dụng làm kiểu liệt kê cho kiểu liệt kê ngoại trừ kiểu cơ sở không được lớn hơn int trừ khi giá trị của một điều tra viên không thể khớp với int hoặc không dấu. Nếu danh sách liệt kê trống, loại bên dưới như thể liệt kê có một liệt kê duy nhất có giá trị 0. Giá trị sizeof()được áp dụng cho loại liệt kê, đối tượng của kiểu liệt kê hoặc liệt kê, là giá trị sizeof()được áp dụng cho loại cơ bản .
Sau đó đến n2347 , bài báo được thông qua cho các kiểu liệt kê được đánh máy mạnh ( enum class) và các cải tiến khác đối với các bảng liệt kê không có giới hạn, và nó đã được in đậm. Thật thú vị, một phiên bản trước đó của đề xuất, n2213 , đã có một sự thay thế cho câu bị loại bỏ. Nhưng nó đã không được đưa vào phiên bản đã được thông qua.
Vì vậy, trong C ++ hiện đại, không có nghĩa vụ nào cho các kích thước giống nhau. Mặc dù từ quan điểm thực tế, việc triển khai dường như không thay đổi hành vi được quy định bởi C ++ 03 đối với kích thước liệt kê.
Người ta có thể coi đó là một khiếm khuyết trong tiêu chuẩn.