Dưới đây là một chút mã mà có vẻ như nó sẽ làm việc:Tại sao C++ số_limits <enum_type> :: max() == 0?
#include <cassert>
#include <limits>
enum test { A = 1 };
int main()
{
int max = std::numeric_limits<test>::max();
assert(max > 0);
}
Nhưng nó không dưới cả GCC (4.6.2) và kêu vang (2.9) trên Linux: max() với nhiều loại enum là trong thực tế số không! Và điều này vẫn đúng ngay cả khi bạn sử dụng trình chỉ định loại C++ 11 enum để giải thích kiểu bạn muốn enum của bạn có.
Tại sao điều này? Và đối với hành vi C++ 11, nó có phải là một cái gì đó được gọi một cách khéo léo không? Tôi có thể tìm thấy không có đề cập đến nó trong N2347, bài báo trên Strongly Typed Enums.
gì bạn mong đợi giá trị được? –
Kết quả của is_specialized là gì? – RaptorFactor
@JamesMcNellis: Tôi cho rằng anh ta dự kiến nó giống như số_limits :: max. –
RaptorFactor