Xem xét việc này mộtCác thành viên "enum class" có được khởi tạo ngay lập tức hay muộn hơn khi được sử dụng không?
template<typename T>
struct A {
enum class X {
V = T()
};
};
Đối với các lớp học thành viên và các hàm thành viên, C++ 11 (và C++ 03) sẽ không nhanh chóng định nghĩa của họ trừ khi chúng ta sử dụng chúng trong một cách mà đòi hỏi định nghĩa của họ. Điều này có đúng với enum class
không?
// valid?
A<std::string> a;
Thật không may, tôi không thể kiểm tra trình biên dịch vì C++ 11 sắp hết và mọi thứ chưa đáng tin cậy.
Tôi không nghĩ rằng 'A a;' là hợp lệ trừ khi 'std :: string' có thể được chuyển đổi hoàn toàn thành' int'. Nhưng sau đó một lần nữa ... –
Florian